GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> cPanel

PHP-Skripte open_basedir Einschränkung im Effektfehler

PHP open_basedir Protection Tweak ist eine Sicherheitsmaßnahme im abgesicherten Modus, die Benutzer daran hindert, Dateien oder Skripte, die sich außerhalb ihres Home-Verzeichnisses befinden, mit PHP zu öffnen, es sei denn, der Ordner hat dies ausdrücklich ausgeschlossen. Wenn die PHP-Einstellung open_basedir aktiviert ist, stellt sie sicher, dass alle Dateioperationen auf Dateien in einem bestimmten Verzeichnis beschränkt sind, und verhindert so, dass PHP-Skripte für einen bestimmten Benutzer auf Dateien im Konto eines nicht autorisierten Benutzers zugreifen. Wenn ein Skript versucht, eine Datei beispielsweise mit fopen() oder gzopen() zu öffnen, wird der Speicherort der Datei überprüft. Wenn sich die Datei außerhalb des angegebenen oder zulässigen Verzeichnisbaums befindet, weigert sich PHP, sie zu öffnen, und die folgenden Fehler können auftreten:

Warnung:file_exists() [function.file-exists]:open_basedir-Einschränkung in Kraft. Datei (/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg) befindet sich nicht innerhalb der zulässigen Pfade:(/home/user_name:/usr/lib/php:/usr/local /lib/php:/tmp) in /home/user_name/public_html/wp-admin/inline-uploading.php auf Zeile 226

Die obige Fehlermeldung erscheint in einem Apache httpd-Webserver-Fehlerprotokoll (error_log), das WordPress-Blog hostet. Das Problem kann jedoch bei allen Systemen oder Websites auftreten, die PHP als Skriptsprache verwenden.

Die Lösung oder Umgehung des open_basedir-Einschränkungsproblems besteht darin, den PHP-open_basedir-Schutz vollständig zu deaktivieren oder den Schutz für bestimmte privilegierte Benutzerkonten auszuschließen oder den Zugriff auf das zusätzliche Verzeichnis für PHP-Skripte zu ermöglichen.

Wenn Sie cPanel WebHost Manager (WHM) verwenden, können Sie den PHP open_basedir-Schutz einfach deaktivieren oder bestimmte Benutzer vom Schutz mit WHM ausschließen. Gehen Sie einfach zu „Tweak Security“ im Abschnitt „Security“ und wählen Sie dann den Link „Configure“ für „Php open_basedir Tweak“. Darin können Sie den php open_basedir-Schutz aktivieren oder deaktivieren oder Hosts vom Schutz ausschließen oder einbeziehen.

Wenn Sie das Plesk Hosting Control Panel verwenden, müssen Sie möglicherweise die Apache-Konfigurationsdatei vhost.conf und vhost_ssl.conf manuell bearbeiten und die folgenden php_admin_value open_basedir-Zeilen zu Folgendem hinzufügen oder bearbeiten:

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir none
</Directory>

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir /full/path/to/dir:/full/path/to/directory/httpdocs:/tmp
</Directory>

Hinweis:Für SSL-Hosts in der Datei vhost_ssl.conf endet der Verzeichnispfad mit „httpsdocs“ anstelle von „httpdocs“.

Die Pfade (oben ist nur ein Beispiel und müssen durch einen echten Pfad ersetzt werden), die sich hinter open_basedir befinden, sind die Verzeichnisse, die den PHP-Skripten im vhost-Domänenkonto ausdrücklich den Zugriff ermöglicht haben, sodass Sie weitere Verzeichnisse hinzufügen können, in denen Dateien gespeichert und benötigt werden von PHP zu öffnen, jeweils getrennt durch Farbe „:“. Aber seien Sie vorsichtig, da dies Ihr System Sicherheitsbetrug aussetzen könnte.

Führen Sie anschließend den folgenden Befehl aus, damit die Änderungen wirksam werden, und starten Sie dann den Apache httpd-Webserver neu (apache2ctl restart oder httpd restart):

$PRODUCT_ROOT_D/admin/sbin/websrvmng -v -a

Wenn Sie die Apache-Konfigurationsdatei manuell bearbeiten müssen, um den PHP-open_basedir-Schutz zu deaktivieren, öffnen Sie einfach die Datei httpd.conf und suchen Sie nach den Zeilen, die mit den folgenden Zeichen beginnen:

php_admin_value open_basedir …..

Ersetzen Sie die gesamte Zeile unter dem virtuellen Host für das Domänenbenutzerkonto, für das Sie den Schutz deaktivieren möchten, durch die folgende Zeile, um ihn zu deaktivieren:

php_admin_value open_basedir none

Sie können sich auch dafür entscheiden, Ihren PHP-Skripten den Zugriff auf zusätzliche Verzeichnisse zu erlauben, ohne den Schutz zu deaktivieren. Der Zeile können weitere Verzeichnisse hinzugefügt werden, getrennt durch ein farbiges „:“. Zum Beispiel, um /new_directory zur Zulassungsliste hinzuzufügen:

php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp"
php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp:/new_directory"

Starten Sie den Apache nach Abschluss der Bearbeitung neu. Beachten Sie, dass die obige Beschränkung der Liste der zulässigen Verzeichnisse tatsächlich ein Präfix und kein Verzeichnisname ist. Das bedeutet, dass „open_basedir =/dir/incl“ auch den Zugriff auf „/dir/include“ und „/dir/incls“ erlaubt, falls diese existieren. Wenn Sie den Zugriff nur auf das angegebene Verzeichnis beschränken möchten, enden Sie mit einem Schrägstrich. Zum Beispiel:„open_basedir =/dir/incl/“.


cPanel
  1. Fehlerbehandlung in Bash-Skripten

  2. Pspell kann nicht gefunden werden – PHP-Konfigurationsfehler behoben

  3. Schwerwiegender Php-Fehler:Aufruf einer undefinierten Funktion Thesql_connect()?

  4. Warnung:file_exists() [function.file-exists]:open_basedir-Einschränkung in Kraft.

  5. Schwerwiegender Fehler:Aufruf einer undefinierten Funktion mb_substr() Fehler

So führen Sie Skripte über Cron-Jobs aus

Wie aktiviere ich die PHP-Fehlerberichterstattung in cPanel?

Aktivieren Sie die PHP-Fehlerprotokollierung beim Web- und Reseller-Hosting

Wie aktiviere ich PHP-Fehlermeldungen auf cPanel?

Wie kann man die maximale Dateigröße / PHP-Werte für den Upload auf cPanel erhöhen?

So erstellen Sie ein PHP-Fehlerprotokoll in cPanel