WordPress MySQL Umzug (von 1&1 nach anderem Hoster): Fehler "is_dir(): open_basedir restriction in effect. File(/) is not within the allowed path(s):"

Es könnte so einfach sein, sein WordPress von 1&1 zu einem anderen Hoster umzuziehen.

  • FTP-Verzeichnisse herunterladen, am Ziel raufladen, Rechte setzen.
  • MySQL-Datenbank am Ziel erzeugen.
  • Im 1&1-phpMyAdmin die Datenbank über Exportieren als Datei speichern.
  • Beim Zielhoster im phpMyAdmin die Datenbankdatei via Importieren hochschießen.
  • Fertig.

Wenn dann aber nur Schrott zu sehen ist oder eine Millionen Meldungen der Art is_dir(): open_basedir restriction in effect. File(/) is not within the allowed path(s):, dann liegt das wahrscheinlich an folgendem Problem (und kann wie folgt behoben werden):

DOCUMENT_ROOT

Und zwar liegen alle unsere Verzeichnisse beim Hoster ja nicht etwa in einem Hauptverzeichnis wie "/", auch wenn das via FTP so aussehen mag.

In Wirklichkeit liegen unsere Dateien in einem "DOCUMENT_ROOT" genannten Verzeichnis wie /Wichtig/Quark-n-Käse/Kunden/Zeug/WasMitZiffern876r5145/blubb/meine_kundennummer/meinPfadzuWP/.

Und genau diese Information speichert WordPress leider in seiner Konfiguration, die man per .SQL-Datenbankdatei vom 1&1 zum Zielsystem überträgt. Das kann natürlich nicht gehen.

Was tun?

Suchen & Ersetzen!

Der Trick ist, den alten Pfad durch einen neuen zu ersetzen.

  • Vorbereitung:
    Legen Sie eine Kopie der Datei der exportierten SQL-Datenbank an und lege sie diese irgendwo an sicherer Stelle ab. (Falls Sie im folgenden das Original verhunzen.)
  • Einfacher Weg:
    Führen Sie VOR dem Importieren der MySQL-Datenbank ein Suchen & Ersetzen innerhalb der .SQL-Datei (das ist Plaintext, aber ein Editor wie Notepad++ ist empfehlenswert) durch.
  • Alternative, etwas schwieriger:
    Führen Sie NACH dem Importieren der MySQL-Datenbank am Ziel ein Suchen & Ersetzen via phpMyAdmin durch. Geht genauso, aber nicht traut sich, mit phpMyAdmin rumzufummeln.

Doch was ist durch was zu ersetzen? Das ist individuell anders.

Den Original-Pfad finden

Zuerst brauchen Sie den Pfad beim Original, in meinem Fall bei 1&1, dem Hoster, bei dem ich ganz ganz dringend weg will mit dieser letzten Domain. Diesen Pfad finden Sie am einfachsten, indem Sie in der SQL-Datei (zum Beispiel) nach upload_path suchen. Das erhalten Sie eine Zeile wie diese:

(60, 'upload_path', '/homepages/3/d271537192/htdocs/kaschemme_de/wp-content/uploads', 'yes'),

Farblich hervorgehoben ist der Pfad zu WordPress.
Genauer gesagt:

  • /homepages/3/d271537192/htdocs ist der Pfad zum DOCUMENT_ROOT
  • /kaschemme_de/ der Pfad zur WordPress-Installation
  • zusammen ist also /homepages/3/d271537192/htdocs/kaschemme_de/ der "wahre Pfad" zum Verzeichnis der WordPress-Installation auf dem 1&1-Server.

Der Ziel-Pfad finden

Tja. Raten.  Beim Hoster fragen. Ich fand ihn in meinem Fall, bei All-Inkl.com, durch googeln von wo ist DOCUMENT_ROOT site:all-inkl.com. Demnach ist der Pfad auf dem Zielsystem in meinem Fall /www/htdocs/FTP-LOGIN/Ordner.

Eine *immer funktionierende* Alternative ist, auf dem Zielsystem ein Blanko-WordPress aufzusetzen, mindestens einen Bild-Upload durchzuführen, die SQL-Datenbank zu exportieren und auch dort nach upload_path zu suchen (oder das direkt im phpMyAdmin zu tun). Danach die Datenbank und das WordPress wieder löschen.

Die Angabe /www/htdocs/FTP-LOGIN/Ordner bedeutet im konkreten Fall:

  • /www/htdocs/FTP-LOGIN/ ist der DOCUMENT_ROOT; wenn der FTP-Login (Benutzername) also w192837465 lautet, dann ist das zum Beispiel /www/htdocs/w192837465/
  • /Ordner/ ist der Ordner der WordPress-Installation auf dem neuen Server, bei mir zum Beispiel /kaschemme.de/
  • zusammengenommen also /www/htdocs/w192837465/kaschemme.de/

Dies ist der neue "wahre Pfad" zum Verzeichnis der WordPress-Installation auf dem Ziel-Server.

Suchen und Ersetzen

Ergo ist zu suchen

/homepages/3/d271537192/htdocs/kaschemme_de/

und zu ersetzen mit

/www/htdocs/w192837465/kaschemme.de/

Und schon geht wieder alles. Und weil das zu meiner eigenen Überraschung reichte, dachte ich, ich teile dieses Wissen mit Ihnen - hoffentlich hilft es!

replace