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!

Ähnliche Artikel:

Zum Weiterempfehlen

Ein Gedanke zu „WordPress und open_basedir restriction in effect“

  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.