2008-10-21 5 views
21

open_basedir begrenzt die Dateien, die von PHP innerhalb eines Verzeichnisbaums geöffnet werden können.Wie kann ich PHP Open_basedir Einschränkung entspannen?

Ich speichere mehrere Klassenbibliotheken und Konfigurationsdateien außerhalb meines Webstammverzeichnisses. Auf diese Weise macht der Webserver sie nicht öffentlich zugänglich. Allerdings, wenn ich versuche, sich aus meiner Anwendung schließen ich einen open_basedir Beschränkung Fehler wie diese:

Warnung: realpath() [function.realpath]: open_basedir restriction in effect. Datei (/var/www/vhosts/domain.tld/zend/application) ist nicht innerhalb des erlaubten Weg (e): (/var/www/vhosts/domain.tld/httpdocs:/tmp) in /var/www/vhosts/domain.tld/httpdocs/index.php on line 5

Meine Web-root ist hier:

/var/www/vhosts/domain.tld/httpdocs 

Meine Bibliotheken und Konfigurationsverzeichnis befinden sich hier:

/var/www/vhosts/domain.tld/zend 

Was wäre die beste Lösung, um die Einschränkung von open_basedir zu lockern, so dass die Verzeichnisstruktur unter dem Domänenordner für meine Anwendung verfügbar wird? Ich habe eine Reihe von Domänen, mit denen ich dies tun möchte, und ich bin auch offensichtlich vorsichtig, Sicherheitslücken zu schaffen.

Hinweis: Ich verwende CentOS, Apache, Plesk, und ich habe root ssh Zugriff auf den Server. Und obwohl dies nicht direkt für Zend Framework gilt, verwende ich es in diesem Fall. Also hier ist die Einbeziehung von Zend Bootstrap:

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zend/application/')); 
set_include_path(APPLICATION_PATH . '/../zend/library' . PATH_SEPARATOR . get_include_path()); 

Antwort

20

Sie können dies auch leicht pro Verzeichnis durchführen, indem Sie die Apache-Konfigurationsdatei (z. B. httpd.conf) verwenden (vorausgesetzt, dies ist Ihr Webserver)

<Directory /var/www/vhosts/domain.tld/httpdocs> 
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend" 
</Directory> 

Sie können auch vollständig die Einschränkung entfernen mit

<Directory /var/www/vhosts/domain.tld/httpdocs> 
php_admin_value open_basedir none 
</Directory> 
+6

Wenn der op plesk läuft muss er etwas spezieller als das sein: http://www.toosweettobesour.com/2008/02/02/plesk-open_basedir-workaround/ – dcousineau

+0

tom: Wouldn Wird die Einschränkung nicht vollständig aufgehoben, entsteht eine Sicherheitslücke? dcousineau: danke! – isuldor

+0

Brian: Sie würden nur die Einschränkung für PHP-Dateien entfernen, die von /var/www/vhosts/domain.tld/httpdocs ausgeführt werden, aber ja, die erste Option ist besser –

2

fügen Sie die Pfade, die Sie brauchen, um (/var/www/vhosts/domain.tld/zend) für den Zugriff auf Ihre open_basedir-Richtlinie (können Sie mehrere Pfade angeben die Verwendung von Pfadtrenn ‚:‘ oder ‚;‘ in windows)

zu beachten, dass die Werte in den open_basedir Präfixe sind, was bedeutet, dass alles, was unter dem /var/www/vhosts/domain.tld/zend zugänglich sein wird

+0

siehe auch: http://de2.php.net/features.safe-mode# ini.open-basedir – VolkerK

1

In Parallels Plesk Panel (z 1und1) Sie es in den PHP-Panel-Einstellungen tun können:

enter image description here

hier:

enter image description here

+0

Thx Igor, aber warum "* ex: 1and1 *"? Akzeptieren sie keine PHP-Überschreibungen? – Jongosi

+0

Ja, aber nur durch ihr Panel. Vielleicht liegt die Verwirrung daran, dass das Wort "ex" von z. –

Verwandte Themen