PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache erstellt autoindex nicht mehr



SirLacy
20.03.06, 14:02
Hallo,
ich wollte auf meinem Apache2 erstmal generell das Ausführen für php-Dateien verbieten, kann aber das php-Modul nicht entfernen, weil ich in einem einzigen Verzeichnis eben doch php brauche. Nun habe ich in die /etc/apache2/sites-available/defaults folgende Zeilen eingefügt:


<Files ~ "\.php$"> Order allow,deny
Deny from all
</Files>
Funktioniert auch super, allerdings bekomme ich keinen Index mehr, wenn ich mit dem Browser auf ein Verzeichnis gehe, was ich aber gern hätte. Vielen Dank schonmal für die Mithilfe.

Apache/2.0.54
Debian 1:3.3.4-6sarge1

P.S.: Nur, um es schonmal vorweg zu nehmen: Es kann an keiner anderen Änderung liegen. Wenn ich die Zeilen auskommentiere, gehts wieder.

Tomek
20.03.06, 16:58
Bitte lesen: http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html

SirLacy
20.03.06, 17:20
Ja, schon mehrmals gelesen. Auf welchen Punkt willst du hinaus?
Vielleicht hab ichs auch nicht genau genug formuliert. Wenn ich ein Verzeichnis mit dem Browser aufrufe, auch wenn keine php-Dateien drin liegen, bekomme ich vom Server den Status 403, also Zugriff verweigert.

undefined
20.03.06, 19:34
Was du machst kann nicht gehen. Innerhalb von einer Directory Directive und Files Match
php_admin_flag engine Off

SirLacy
20.03.06, 21:32
Warum genau kann das nicht gehen? Der Zugriff auf .htaccess beispielsweise wird auf die gleiche Art verhindert.

undefined
20.03.06, 22:15
ich wollte auf meinem Apache2 erstmal generell das Ausführen für php-Dateien verbieten
Du verhinderst mit deinem Code nicht das Ausführen sondert verbietest nur den Zugriff einzelner Hosts ;)
PHP ist eine Client Anwendung und keine Datei an sich. Der PHP Parser läuft auf diesem Verzeichnis also weiter ;)

marce
21.03.06, 07:05
PHP ist eine Client Anwendung und keine Datei an sich. Der PHP Parser läuft auf diesem Verzeichnis also weiter ;)
Der erste Teil dieses Satzes hat leider einen Wahrheitsgehalt von 0% :-) PHP wird serverseitig ausgeführt.

undefined
21.03.06, 07:32
Also hier muss man immer bis ins kleinste Detail vorkauen. PHP ist eine Client Anwendung von Apache weil es es als Modul geladen oder via cgi btw. cli angesprochen wird. Der PHP Parser ist eine Eigenständige Anwendung nur die Ausgabe erfolgt mit Apache. Der Apache läuft als Daemon dem nach sind alle Anwendungen die mit eingebunden werden Client Anwendungen. Und hat demnach nichts - wie du es hier Interpretiert hast - mit dem HTTP Protokoll zu tun. Du kannst PHP genauso gut auch auf der Konsole verwenden. ;)

marce
21.03.06, 07:37
Den php-Parser als Client des Apache zu bezeichnen ist IMHO trotzdem falsch, mit dem Satz kann ich aber trotzdem besser leben - auch wenn ich es niemals so formulieren würde. Ich wollte nur sicherstellen, dass hier keine Misserverständnisse auftreten - und Client-Seite bei Webanwendungen ist nunmal im allgemeinen Sprachverständnis der Browser.

SirLacy
21.03.06, 08:52
Du verhinderst mit deinem Code nicht das Ausführen sondert verbietest nur den Zugriff einzelner Hosts ;)
PHP ist eine Client Anwendung und keine Datei an sich. Der PHP Parser läuft auf diesem Verzeichnis also weiter ;)
Das ist mir klar, aber ich wenn kein Host mehr PHP-Dateien aufrufen kann, dann hab ich das, was ich wollte.
Btw.: Bitte ersten Post lesen, ich hab geschrieben, dass das Verbieten von PHP-Dateien soweit funktioniert, das Problem bestand bei autoindex.

Aber ich hab den Fehler gefunden, offenbar ein Bug. Gibt man in der apache2.conf bei DirectoryIndex _nicht_ index.php an, dann funktioniert alles wunderbar, unabhängig davon, ob im Verzeichnis eine PHP-Datei liegt oder nicht.