Wyłącz PHP w katalogu (łącznie ze wszystkimi podkatalogami) za pomocą.htaccess

Tworzę stronę internetową, która umożliwia przesyłanie plików, stron html itp... Teraz mam problem. Mam taką strukturę katalogów:

-/USERS
    -/DEMO1
    -/DEMO2
    -/DEMO3
    -/etc... (every user has his own direcory here)
-index.php
-control_panel.php
-.htaccess

Teraz chcę wyłączyć PHP, ale włączać wpisy po stronie serwera w katalogach i podkatalogach wewnątrz /USERS

Można to zrobić (i jak :) )? Z góry dzięki.

BTW, używam serwera WAMP

Author: Tor Valamo, 2009-08-13

8 answers

Spróbuj wyłączyć engine Opcja w Twoim .plik htaccess:

php_flag engine off
 106
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-13 13:46:37

Aby wyłączyć cały dostęp do sub dirs (najbezpieczniejszy) użyj:

<Directory full-path-to/USERS>
     Order Deny,Allow
     Deny from All
 </Directory>

Jeśli chcesz zablokować bezpośrednio serwowane tylko pliki PHP, wykonaj:

1-Upewnij się, że wiesz, jakie rozszerzenia plików serwer rozpoznaje jako PHP (i dont' allow people to override in htaccess). Jeden z moich serwerów jest ustawiony na:

# Example of existing recognized extenstions:
AddType application/x-httpd-php .php .phtml .php3

2-na podstawie rozszerzeń dodaje Wyrażenie regularne do FilesMatch (lub LocationMatch)

 <Directory full-path-to/USERS>
     <FilesMatch "(?i)\.(php|php3?|phtml)$">
            Order Deny,Allow
            Deny from All
    </FilesMatch>
 </Directory>

Lub użyj Location aby dopasować Pliki php (wolę above files approach)

<LocationMatch "/USERS/.*(?i)\.(php3?|phtml)$">
     Order Deny,Allow
     Deny from All
</LocationMatch>
 40
Author: Lance Rushing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-10 14:13:44

Jeśli używasz mod_php, możesz umieścić (albo whtaccess w /USERS lub w httpd.conf dla katalogu USERS)

RemoveHandler .php

Lub

RemoveType .php

(w zależności od tego, czy PHP jest włączone za pomocą AddHandler czy AddType)

Pliki PHP uruchamiane z innego katalogu nadal będą mogły zawierać pliki w /USERS (zakładając, że nie ma ograniczeń open_basedir), ponieważ nie przechodzi to przez Apache. Jeśli plik php jest dostępny za pomocą apache będzie to serverd jako zwykły tekst.

Edit

Rozwiązanie Lance ' a Rushinga polegające na odmowie dostępu do plików jest prawdopodobnie lepsze.]}
 11
Author: Tom Haigh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-13 13:32:17
<Directory /your/directorypath/>
     php_admin_value engine Off
</Directory>
 8
Author: Domus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-18 22:02:38

Wyświetli kod źródłowy zamiast go wykonać:

<VirtualHost *>
    ServerName sourcecode.testserver.me
    DocumentRoot /var/www/example
    AddType text/plain php
</VirtualHost>

Użyłem go raz, aby umożliwić innym współpracownikom dostęp do odczytu kodu źródłowego z sieci lokalnej (tylko szybka i brudna alternatywa).

Uwaga !:

Jak Dan zauważył jakiś czas temu, ta metoda nigdy nie powinna być używana w produkcji. Postępuj zgodnie z przyjętą odpowiedzią, ponieważ blokuje ona wszelkie próby wykonania lub wyświetlenia plików php.

Jeśli chcesz, aby użytkownicy udostępniali Pliki php (i niech inni wyświetlą kod źródłowy), są lepsze sposoby, aby to zrobić, jak git, wiki, itp.

Tej metody należy unikać! (zostałeś ostrzeżony. Zostawił go tutaj w celach edukacyjnych)

 7
Author: lepe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-01 02:34:42

To może być przesada - ale uważaj na wszystko, co polega na rozszerzeniu plików PHP .php - co jeśli ktoś pojawi się później i doda programy obsługi dla .php4 lub nawet .html, więc są obsługiwane przez PHP. Może lepiej będzie serwować pliki z tych katalogów z innej instancji Apache lub czegoś takiego, która obsługuje tylko statyczną zawartość.

 1
Author: Dominic Rodger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-13 13:36:26

Żadna z tych odpowiedzi nie działa dla mnie(albo generuje błąd 500 lub nie robi nic). Prawdopodobnie wynika to z faktu, że pracuję na serwerze hostowanym, na którym nie mogę mieć dostępu do konfiguracji Apache.

Ale To mi pomogło:

RewriteRule ^.*\.php$ - [F,L]

Ta linia wygeneruje zakazany błąd 403 dla każdego adresu URL, który kończy się .php i kończy się w tym podkatalogu.

@Oussama poprowadź mnie we właściwym kierunku tutaj , Dzięki niemu.

 1
Author: Fabien Quatravaux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-06 14:20:04

Spróbuj tego:

    <FilesMatch "\.((php[0-9]?)|p?html?|pl|sh|java|cpp|c|h|js|rc)$">
    SetHandler None
    </FilesMatch>
 -3
Author: DOBss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 05:46:33