Tipps und Tools rund um WordPress, Google und mehr
WordPress und open_basedir restriction in effect
Bei manchen WordPress-Installationen kann beim Hochladen von Bildern oder dem Aktualisieren von Plugins eine Meldung wie die folgende erscheinen:
open_basedir restriction in effect. File(/tmp/XXXXXXXX/YYYYYYY) is not within the allowed path(s)
Das bedeutet, dass PHP nicht in das Server-Verzeichnis /tmp
bzw. in ein Unterverzeichnis davon schreiben kann. Eine erste (nicht wirklich anzuratende, s.u.) Abhilfe ist es, ein eigenes tmp-Verzeichnis im WordPress-Bereich anzulegen (z.B. /wp-content/tmp) und WordPress mit Hilfe eines Eintrags in wp-config.php darüber zu informieren:
putenv('TMPDIR=/www/docs/XXXXXXXX/wp-content/tmp');
define('TEdeQ_TEMP_DIR', '/www/docs/XXXXXXXX/wp-content/tmp');
Wie der Pfad für Ihren Server genau lautet, das müssen Sie leider selbst herausfinden. Einerseits lässt sich das aus der Fehlermeldung herauslesen, andererseits können Sie dazu die PHP-Funktion phpinfo()
benutzen. Erstellen Sie eine Datei namens info.php im Verzeichnis /wp-content, und schreiben da hinein:
<?php phpinfo(); ?>
Rufe Sie dann diese Datei über Ihren Browser auf:
http://www.ihreDomain.tld/wp-content/info.php
In der Angabe zu SCRIPT_FILENAME
finden Sie nun den gesamten Pfad zur Datei info.php. In umserem Fall wäre das:
/www/docs/XXXXXXXX/wp-content/info.php
Löschen Sie danach diese Datei wieder vom Server aus Sicherheitsgründen. Die Daten, die da gezeigt werden, gehen niemanden etwas an.
Alternativ können Sie auch das hier in wp-config.php eintragen, und ersparen sich dadurch die Suche nach dem Pfad:
putenv('TMPDIR=' . ABSPATH . '
wp-content/
tmp');
define('TEdeQ_TEMP_DIR', ABSPATH . 'wp-content/
tmp');
Wie immer Sie das auch anstellen: seien Sie sich bewusst, dass Sie damit allerdings unter Umständen eine Sicherheitslücke öffnen, denn so ein tmp-Verzeichnis sollte grundsätzlich am besten ausserhalb des Webserver Bereichs liegen, also nicht über http://www.ihredomain.tld/ erreichbar sein!
Mit Sicherheit besser
Sehen Sie daher in Ihrer info.php-Datei auch gleich nach, was in der Zeile zu open_basedir
steht. Wenn Sie da nichts anderes als Ihr WordPress-Verzeichnis finden, und keinerlei Angabe zu /tmp, dann hat WordPress schlechte Karten auf dem Server. In vielen Fällen können Sie mit der folgenden Angabe in der Datei httpd.conf
WordPress den nötigen Arbeitsbereich verschaffen:
<Directory /www/docs/XXXXXXXX>
php_admin_value open_basedir "/www/docs/XXXXXXXX:/tmp"
</Directory>
Oder Sie heben die Beschränkung überhaupt auf mit:
<Directory /www/docs/XXXXXXXX>
php_admin_value open_basedir none
</Directory>
Wieder gilt: wie der Pfad bzw. die Angabe in <Directory>
nun genau lautet, das müssen Sie für Ihren Server herausfinden. Damit brauchen Sie auch das selbstgeschaffene tmp-Verzeichnis nicht mehr. Wenn Sie auf die Datei httpd.conf keinen Zugriff haben, dann informieren Sie Ihren Hoster und bitte um entsprechenden Eintrag.
Und nochmals: nach getaner und hoffentlich erfolgreicher Arbeit löschen Sie bitte die Datei info.php wieder vom Server!
Möchten Sie über neue Artikel und mehr rasch informiert werden?
Dann empfehlen wir Ihnen die Anmeldung zu unserem Newsletter "Online-Marketing News der E-Werkstatt".
Hallo Heinz!
Danke für den tollen Artikel!
Wenn ich darf, würde ich gerne eine Kleinigkeit ergänzen:
Manchmal ist es so, dass der Hoster recht schnell helfen kann.
Bei mir war es so, dass per .htacess der CGI Modus aktiviert werden musste – so die Info vom Hoster.
Der Eintrag sieht dann so aus: addhandler php55-cgi .php
Vielleicht trifft diese Antwort meines Hosters auch auf offene Fragen von anderen Usern zu 🙂
Viele Grüße
Maggy