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!

Für die Weiterempfehlung:

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".


Heinz Duschanek
Heinz Duschanek

Heinz Duschanek hat 2003 die Online-Marketing Agentur E-Werkstatt gegründet. Da er vorher auch beim Radio gearbeitet hatte (Radio CD International, Ö1, Ö3), freut er sich jetzt ganz besonders über die Richtung, die das Online-Marketing nimmt. Denn das liefert einen Vorwand dafür, viele elektrischen Geräte und Gadgets rund um Audio und Video anzuschaffen.

Daneben interessiert sich Heinz auch für Tango Argentino (seit 2009), Lindy Hop, Wing-Tsun, Boxen, (Jazz-/Blues-)Gitarre.

Ein Kommentar

  1. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert