Ich erhalte den Fehler "open_basedir" im PHP-Script. Wie kann ich diesen Fehler beheben?

Created:

2016-11-16 13:22:41 UTC

Modified:

2017-08-16 17:11:36 UTC

7

Was this article helpful?


Have more questions?

Anfrage einreichen

Ich erhalte den Fehler "open_basedir" im PHP-Script. Wie kann ich diesen Fehler beheben?

Applicable to:

  • Plesk for Linux/Unix
  • Plesk 11.5 for Windows

Ursache

Dieser Fehler bedeutet, dass das PHP-Script versucht, auf einen Ordner zuzugreifen, für den der Zugriff nicht erlaubt ist. Aus Sicherheitsgründen erlauben die PHP-Optionen für gehostete Domains in Plesk standardmäßig den Zugriff nur auf die Ordner /tmp und http(s)docs . Die Begrenzungen werden durch die PHP-Variable open_basedir für jeden virtuellen Host separat festgelegt.

Lösung

Wenn Sie den Zugriff von PHP-Scripts eines bestimmten virtuellen Hosts auf (einen) zusätzliche(n) Ordner zulassen möchten, sollte die Option 'open_basedir' für den virtuellen Host mit einem neuen Pfadwert definiert werden. Mehrere Ordnernamen werden durch einen Doppelpunkt getrennt. Dies kann von Nutzern mit Root-Berechtigungen nur in den Domain-Dateien vhost.conf oder vhost_ssl.conf (für den SSL-Virtual Hos t) vorgenommen werden, siehe Artikel ' Including Directives into Web Server Configuration File ' in der Plesk-Dokumentation für weitere Einzelheiten.

Sobald die Änderungen vorgenommen wurden, müssen Sie die Apache-Konfigurationsdateien neu erstellen und den Apache-Dienst neu starten, indem Sie den folgenden Befehl in der Shell nutzen. Wenn die Datei vhost(_ssl).conf gefunden wird, wird sie automatisch der Datei httpd.include der Domain hinzugefügt:

# /usr/local/psa/admin/sbin/websrvmng -v -a

Beispiele:

HINWEIS: HTTPD_VHOSTS_D sollte durch einen realen Pfad zu Domain-Homes ersetzt werden, der je nach Plesk-Version und Betriebssystem variieren kann; der aktuelle Wert kann der /etc/psa/psa.conf-Datei entommen werden. ADD_PATH sollte durch einen realen Pfad zu einem Ordner ersetzt werden, für den Sie den Zugriff erlauben müssen.

Erstellen Sie HTTPD_VHOSTS_D/domain.com/conf/vhost.conf :

<Directory HTTPD_VHOSTS_D/domain.com/httpdocs>
php_admin_value open_basedir "HTTPD_VHOSTS_D/domain.com/httpdocs:/tmp:/ADD_PATH"
</Directory>

Erstellen Sie HTTPD_VHOSTS_D/domain.com/conf/vhost_ssl.conf :

<Directory HTTPD_VHOSTS_D/domain.com/httpsdocs>
php_admin_value open_basedir "HTTPD_VHOSTS_D/domain.com/httpsdocs:/tmp:/ADD_PATH"
</Directory>

Für eine Subdomain erstellen Sie die Datei HTTPD_VHOSTS_D/domain.tld/subdomains/subdomain/conf/vhost.conf entsprechend :

<Directory HTTPD_VHOSTS_D/domain.com/subdomains/subdomain/httpdocs>
php_admin_value open_basedir "HTTPD_VHOSTS_D/domain.com/subdomains/subdomain/httpdocs:/tmp:/ADD_PATH"
</Directory>

Sie können beispielsweise ein allgemeines 'open_basedir' für einen benötigten Speicherort in /etc/php.ini erstellen:

open_basedir = "/tmp"

Starten Sie Apache nach der php.ini-Änderung neu.

Haben Sie Fragen? Anfrage einreichen
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.