open_basedir Beschränken Sie 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() öffnen möchte, 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.
1. Fügen Sie
open_basedir="指定目录"
2 zu php.ini hinzu .Verwenden Sie
ini_set('open_basedir', '指定目录');
im Programm, aber es wird nicht empfohlen, diese Methode zu verwenden
3. Verzeichniskonfiguration in Apaches httpd.conf
php_admin_value open_basedir "指定目录"
VritualHost in httpd.conf
php_admin_value open_basedir "指定目录"
4.nginx fastcgi.conf
fastcgi_param PHP_VALUE "open_basedir=指定目录"
Der mit open_basedir angegebene Grenzwert ist eigentlich das Präfix, nicht ein Verzeichnisname.
Das heißt, open_basedir=/home/fdipzone ermöglicht 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; zum Trennen von Verzeichnissen und Linux verwendet: zum Trennen von Verzeichnissen.
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 Sie PHP in in.fdipzone.com und führen Sie den folgenden Code aus
<?phpecho file_get_contents('../test.txt');?>
Weil test .txt liegt nicht im eingeschränkten Verzeichnisbereich, daher 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
Nachdem open_basedir aktiviert wurde, wirkt sich dies auf die E/A aus, da für jede aufgerufene Datei beurteilt werden 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 137,237072 ms
Open_basedir-Test öffnen
Laufzeit 404,207945 ms
Nach dem Öffnen von open_basedir wird die Ausführungszeit geschlossen 3 mal.
Zusammenfassung: Die Verwendung von open_basedir kann die Verzeichnisse und Dateien einschränken, die das 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.
In diesem Artikel wird die Verwendung und Leistungsanalyse von open_basedir erläutert, einer PHP-Datei mit der Verzeichniskonfiguration. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Erklärung zur Lösung für Cookie-Verlust beim domänenübergreifenden Ajax-Zugriff
Über key_len in MySQL erklären Erklären Sie die Berechnungsmethode
Wie man mit Curl IP und Quelle für den Zugriff über PHP simuliert
Das obige ist der detaillierte Inhalt vonÜber die Verwendung und Leistungsanalyse von open_basedir in der Verzeichniskonfiguration von PHP-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!