Heim  >  Artikel  >  Backend-Entwicklung  >  Die PHP-Datei enthält die Verzeichniskonfiguration open_basedir, Nutzung und Leistung

Die PHP-Datei enthält die Verzeichniskonfiguration open_basedir, Nutzung und Leistung

墨辰丷
墨辰丷Original
2018-05-24 11:12:291604Durchsuche

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 empfohlen

3. Verzeichniskonfiguration in Apaches httpd.conf

php_admin_value open_basedir " Verzeichnis angeben“

VritualHost in httpd.conf

php_admin_value open_basedir „Verzeichnis angeben“

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

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(&#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;
}
?>

Open_basedir-Test schließen


Laufzeit

137,237072 ms

Open open_basedir test


Laufzeit

404,207945 ms

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!

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