Aktiven Inhalt, wie beispielsweise Skripts und ausfĂŒhrbare Dateien, in den Dokumentverzeichnissen des Webservers abzulegen, wird manchmal als unsichere Methode angesehen. Wenn, beispielsweise aufgrund von Konfigurationsfehlern, die Skripte nicht ausgefĂŒhrt, sondern als regulĂ€re HTML-Dokumente angezeigt werden, kann dies ein Durchsickern von geistigem Eigentum und sicherheitsrelevanter Informationen wie Passwörtern zur Folge haben. Deshalb ziehen es viele Systemadministratoren vor, eine zweite Verzeichnisstruktur fĂŒr Skripte einzurichten, auf die nur durch das PHP-CGI zugegriffen werden kann. Diese werden dann stets interpretiert und nicht angezeigt.
Auch wenn die Methode zum sichergestellten Verhindern einer Umleitung von Anfragen (wie im vorangegangenen Abschnitt beschrieben) nicht verfĂŒgbar ist, ist es notwendig, ein doc_root fĂŒr Skripte zusĂ€tzlich zum Web-Dokumentenverzeichnis einzurichten.
Sie können das PHP-Skriptverzeichnis durch die Direktive
doc_root in der
Konfigurationsdatei
festlegen, oder Sie setzen die Umgebungsvariable
PHP_DOCUMENT_ROOT. Wenn sie gesetzt ist, wird die
CGI-Version von PHP den Namen der zu öffnenden Datei
stets aus doc_root und der Pfadinformation der
Anfrage zusammensetzen, sodass man sicher sein kann, dass auĂerhalb
dieses Verzeichnisses keine Skripte ausgefĂŒhrt werden (auĂer
user_dir, siehe unten).
Eine weitere hier nĂŒtzliche Option ist user_dir. Wenn
user_dir nicht gesetzt ist, hat nur
doc_root Einfluss auf die zu öffnende Datei.
Der Aufruf einer URL wie http://my.host/~user/doc.php hat nicht zum
Ergebnis, dass eine Datei im Heimatverzeichnis des Benutzers geöffnet
wird, sondern eine Datei namens
~user/doc.php unterhalb von
doc_root. (Ja, ein Verzeichnisname, der mit einer
Tilde anfÀngt [~].)
Ist user_dir beispielsweise auf
public_php gesetzt, wird eine Anfrage wie
http://my.host/~user/doc.php eine Datei
namens doc.php im Verzeichnis
public_php im Heimatverzeichnis des
Benutzers öffnen. Wenn das Heimatverzeichnis des Benutzers
/home/user ist, so ist die ausgefĂŒhrte
Datei /home/user/public_php/doc.php.
Die user_dir-Expansion erfolgt ohne BerĂŒcksichtigung
der doc_root-Einstellung. So können Zugriffe
auf die Dokumenten- und Benutzerverzeichnisse separat gesteuert werden.