Heim > Artikel > Backend-Entwicklung > Die PHP-Datei enthält die Verzeichniskonfiguration open_basedir, Nutzung und Leistung
Dieser Artikel stellt hauptsächlich die Verwendung und Leistung von open_basedir in der PHP-Datei vor, die die Verzeichniskonfiguration enthält. Ich hoffe, dass er für alle hilfreich ist.
1. Einführung in open_basedir
open_basedir beschränkt die Dateien, die PHP öffnen kann, auf den angegebenen Verzeichnisbaum, einschließlich der Datei selbst. Wenn ein Programm eine Datei beispielsweise mit fopen() oder file_get_contents() öffnet, wird der Speicherort der Datei überprüft. Wenn sich die Datei außerhalb des angegebenen Verzeichnisbaums befindet, weigert sich das Programm, sie zu öffnen.
Dieser Befehl wird durch das Ein- oder Ausschalten des abgesicherten Modus nicht beeinflusst.
2.open_basedir-Einstellungsmethode
1. Fügen Sie
open_basedir="Verzeichnis angeben"2. Verwenden Sie
ini_set('open_basedir', 'Verzeichnis angeben' im Programm );Aber diese Methode wird nicht empfohlen3. Verzeichniskonfiguration in Apaches httpd.conf
php_admin_value open_basedir " Verzeichnis angeben“VritualHost in httpd.conf
4.nginx fastcgi.conf
fastcgi_param PHP_VALUE "open_basedir=angegebenes Verzeichnis"Die mit open_basedir angegebene Einschränkung ist eigentlich ein Präfix, kein Verzeichnisname. Das heißt, open_basedir=/home/fdipzone erlaubt auch den Zugriff auf /home/fdipzone_abc. Wenn Sie den Zugriff auf ein Verzeichnis beschränken möchten, verwenden Sie bitte einen Schrägstrich, um den Pfadnamen zu beenden, zum Beispiel: open_basedir=“/home/fdipzone/ „Wenn Sie mehrere Verzeichnisse einrichten möchten, verwendet Windows;, um die Verzeichnisse zu trennen, und Linux verwendet:, um die Verzeichnisse zu trennen.3. Verwenden Sie open_basedir, um den Verzeichniszugriff einzuschränken
Erstellen Sie zunächst einen VirtualHost, Setzen Sie open_basedir auf /home/fdipzone /sites/in.fdipzone.com/<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/fdipzone/sites/in.fdipzone.com ServerName in.fdipzone.com php_admin_value open_basedir "/home/fdipzone/sites/in.fdipzone.com/" <Directory "/home/fdipzone/sites/in.fdipzone.com"> allow from all Options + Indexes </Directory> </VirtualHost>Erstellen Sie eine test.txt-Datei im oberen Verzeichnis /home/fdipzone/sites/, Erstellen php in in.fdipzone.com und führen Sie den folgenden Code aus:
<?php echo file_get_contents('../test.txt'); ?>Da sich test.txt nicht im begrenzten Verzeichnisbereich befindet, gibt PHP eine Warnung aus
Warnung: file_get_contents(): open_basedir-Einschränkung in Kraft. Datei(../test.txt) liegt nicht innerhalb der zulässigen Pfade: (/home/fdipzone/sites/in.fdipzone .com/) in /home/fdipzone/sites/in.fdipzone.com/index.php in Zeile 3
4 🎜 >Nachdem open_basedir aktiviert wurde, wirkt es sich auf E/A aus, da jede aufgerufene Datei feststellen muss, ob sie sich im eingeschränkten Verzeichnis befindet.
Programm testen, dieselbe Datei im eingeschränkten Verzeichnis 10.000 Mal lesen
<?php // 记录开始时间 $starttime = getMicrotime(); // 读取10000次文件 for($i=0; $i<10000; $i++){ file_get_contents('test.txt'); } // 记录结束时间 $endtime = getMicrotime(); printf("run time %f ms\r\n", ((float)($endtime)-(float)($starttime))*1000); function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>Open_basedir-Test schließen
Laufzeit
Open open_basedir test
Laufzeit
Nachdem open_basedir aktiviert wurde, beträgt die Ausführungszeit
3mal so viel wie beim Ausschalten.
Zusammenfassung: Die Verwendung von open_basedir kann die Verzeichnisse und Dateien einschränken, die ein Programm ausführen kann, und die Systemsicherheit verbessern. Dies beeinträchtigt jedoch die E/A-Leistung und führt zu einer Verlangsamung der Systemausführung. Daher ist es notwendig, Sicherheit und Leistung entsprechend den spezifischen Anforderungen abzuwägen. Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.
Verwandte Empfehlungen:
PHP 3 Möglichkeiten, eine Verbindung zur Datenbank herzustellen
PHPDetaillierte Erläuterung des Referenzvariablenwissens
Gekoppeltes Entwurfsmuster von PHP
Das obige ist der detaillierte Inhalt vonDie PHP-Datei enthält die Verzeichniskonfiguration open_basedir, Nutzung und Leistung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!