Heim >Backend-Entwicklung >PHP-Tutorial >Die Rolle der Option open_basedir in der PHP-Konfigurationsdatei

Die Rolle der Option open_basedir in der PHP-Konfigurationsdatei

高洛峰
高洛峰Original
2017-01-06 14:51:561858Durchsuche

Das Folgende ist die ursprüngliche Beschreibung und Standardkonfiguration in php.ini:
; falls festgelegt, werden alle Dateioperationen auf das definierte Verzeichnis
beschränkt. Diese Anweisung ist am sinnvollsten, wenn sie in a verwendet wird pro -directory oder
; pro-virtualhost-Webserver-Konfigurationsdatei
; ob auf den abgesicherten Modus zugegriffen werden kann von Benutzern Der aktive Bereich der Datei ist auf einen bestimmten Bereich beschränkt, normalerweise den Pfad ihres Home-Verzeichnisses, und das Symbol „.“ kann auch verwendet werden, um das aktuelle Verzeichnis darzustellen. Beachten Sie, dass es sich bei den mit open_basedir angegebenen Einschränkungen tatsächlich um Präfixe und nicht um Verzeichnisnamen handelt.
Zum Beispiel: Wenn „open_basedir = /dir/user“, dann sind die Verzeichnisse „/dir/user“ und „/dir/user1“ beide
zugänglich. Wenn Sie also den Zugriff nur auf ein bestimmtes Verzeichnis beschränken möchten, beenden Sie den Pfadnamen mit einem Schrägstrich. Stellen Sie es beispielsweise auf:
"open_basedir = /dir/user/"

open_basedir kann auch mehrere Verzeichnisse gleichzeitig festlegen. Verwenden Sie Semikolons, um Verzeichnisse in Windows zu trennen, und
Doppelpunkt in jedem anderes System. Separate Verzeichnisse. Wenn es auf das Apache-Modul einwirkt, wird der open_basedir-Pfad im übergeordneten Verzeichnis automatisch geerbt.

Es gibt drei Methoden, um unabhängige Einstellungen für bestimmte Benutzer in Apache vorzunehmen:

(a) Die entsprechende Einstellungsmethode des Verzeichnisses in Apaches httpd.conf:

php_admin_value open_basedir / usr/local/Apache/htdocs/
#Um mehrere Verzeichnisse festzulegen, können Sie sich auf Folgendes beziehen:
php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/


(b) Die entsprechende Einstellungsmethode von VirtualHost in Apaches httpd.conf:
php_admin_value open_basedir /usr/local/apache/htdocs/
#Um mehrere Verzeichnisse festzulegen, können Sie auf Folgendes verweisen:
php_admin_value open_basedir /var/ www/html/:/var/tmp/

(c) Da open_basedir in VirtualHost festgelegt wurde, erbt dieser virtuelle Benutzer nicht mehr automatisch den open_basedir-Einstellungswert in php.ini
. Es ist schwierig, flexible Konfigurationsmaßnahmen zu erreichen, daher wird empfohlen, diese Einschränkung nicht in VirtualHost festzulegen
Diese Einstellung bedeutet das
darf auf das aktuelle Verzeichnis (d. h. das Verzeichnis, in dem sich die PHP-Skriptdatei befindet) und das Verzeichnis /tmp/ zugreifen. Bitte beachten Sie: Wenn das temporäre Verzeichnis zum Hochladen von Dateien festgelegt ist php.ini ist /tmp/, dann müssen Sie
beim Festlegen von open_basedir /tmp/ einschließen, sonst schlägt der Upload fehl. Die neue Version von PHP wird die Warnmeldung „open_basedir-Einschränkung in Kraft“
auslösen, aber die Die Funktion move_uploaded_file() kann die hochgeladene Datei im Verzeichnis /tmp/ immer noch erfolgreich entfernen. Ich weiß es nicht.
Ist das eine Sicherheitslücke oder eine neue Funktion?

Konfiguration für ShopEx472-Version:

open_basedir = "D:/Server;../catalog;../include;../../ home;../syssite;../templates;../sprache;../../sprache ;../../../sprache;../../../../sprache"

Weitere Artikel zur Rolle der Option open_basedir in der PHP-Konfigurationsdatei finden Sie hier Achten Sie auf die chinesische PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn