Heim > Backend-Entwicklung > PHP-Tutorial > Über die Verwendung und Leistungsanalyse von open_basedir in der Verzeichniskonfiguration von PHP-Dateien

Über die Verwendung und Leistungsanalyse von open_basedir in der Verzeichniskonfiguration von PHP-Dateien

jacklove
Freigeben: 2023-03-30 22:58:02
Original
2303 Leute haben es durchsucht

1.Open_basedir-Einführung

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.

2. open_basedir-Einstellungsmethode

1. Fügen Sie

open_basedir="指定目录"
Nach dem Login kopieren

2 zu php.ini hinzu .Verwenden Sie

ini_set('open_basedir', '指定目录');
Nach dem Login kopieren

im Programm, aber es wird nicht empfohlen, diese Methode zu verwenden

3. Verzeichniskonfiguration in Apaches httpd.conf

php_admin_value open_basedir "指定目录"
Nach dem Login kopieren
Nach dem Login kopieren

VritualHost in httpd.conf

php_admin_value open_basedir "指定目录"
Nach dem Login kopieren
Nach dem Login kopieren

4.nginx fastcgi.conf

fastcgi_param PHP_VALUE "open_basedir=指定目录"
Nach dem Login kopieren

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.

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>
Nach dem Login kopieren

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(&#39;../test.txt&#39;);?>
Nach dem Login kopieren

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

4 .Leistungsanalyse der Einstellung von open_basedir

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(&#39;test.txt&#39;);
}// 记录结束时间$endtime = getMicrotime();

printf("run time %f ms\r\n", ((float)($endtime)-(float)($starttime))*1000);function getMicrotime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());    return (float)$usec + (float)$sec;
}?>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage