WBCE CMS – Way Better Content Editing.
You are not logged in.
Hallo,
ich habe meine Webseite beim alten Provider mit backup-plus gesichert (Gesamtsicherung).
Beim neuen Provider habe ich WBCE neu installiert (lief fehlerfrei durch) und per FTP die Backupdateien wieder in das Verzeichnis 'backups' hochgeladen.
Die Dateien werden von Backup-Plus angezeigt und können zum Restore ausgewählt werden. Beim Versuch der Wiederherstellung erhalte ich aber den Fehler: {"code":4031,"error":null} und weiter passiert nichts.
Ich hänge das Protokoll der Sicherung an, die ich versuche wiederherzustellen.
Was könnte das Problem sein?
Last edited by florian (20.06.2023 06:19:01)
Offline
Ich habe den Anhang mal aus Sicherheitsgründen entfernt.
Der Fehlercode 4031 ist ein Timeout. Das heißt, die Datenbanksicherung ist zu groß, um innerhalb der zulässigen Scriptlaufzeit in die Datenbank eingespielt zu werden.
Du hast ein "full" Backup gemacht, d.h. es sind auch Tabellen enthalten, die nicht von WBCE CMS angelegt wurden, und dadurch kann der SQL-Dump sehr umfangreich geworden sein.
Versuche noch einmal, eine Sicherung mit der Option "CMS Sicherung - Nur CMS-Daten und die CMS-Datenbank" zu erstellen und wieder einzuspielen, sofern möglich.
Ansonsten müsstest Du die SQL-Datei mal in Notepad++ o.ä. öffnen und für alle nicht benötigten Tabellen (also die, deren Name nicht mit Deinem Präfix, i.d.R. "wbce_" anfangen) alle DROP-, CREATE- und INSERT-Anweisungen löschen.
Da das nicht so ganz trivial ist, kannst Du auch eine manuelle Wiederherstellung versuchen, also die Dateien hochladen und mittels PHPMyAdmin oder Adminer die Datenbanksicherung einspielen.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Die Sicherung ist ca. 20 MB groß - ist das bereits eine kritische Größe?
Ich habe auch ältere Sicherungen, darunter CMS-Sicherungen mit unter 10 MB. Keine lässt sich einspielen - es erscheint immer derselbe Fehler 4031.
Kann es ein Problem sein, dass die Ordnerpfade zur WBCE-Installation bei altem und neuem Provider nicht identisch sind?
Offline
@florian:
ich glaube du bist auf dem Holzweg. Soweit ich das sehe wird der Errorcode 4031 beim Versuch das /pages Verzeichnis neu anzulegen ausgegeben. (restore.php #50ff)
@musenfreund:
hast du evtl. dein /pages Verzeichnis umbenannt und dies in der backup_settings.php nicht berücksichtigt?
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Nein, ich habe bei der alten und der neuen WBCE-Instanz die originalen Ordnernamen belassen. Auch Verzeichnis 'pages' ist also vorhanden.
Offline
Jetzt habe ich mal versucht, von der neuen WBCE-Instanz eine Sicherung zu erstellen und erhalte auch dabei Fehler 4031.
Die URL ist: https://musenfreund.de/modules/backup_plus/backup.php
Offline
o.k.
hab mal bischen auf meiner Spielwiese rumexperimentiert und konnte den Fehler provozieren.
Er tritt auf wenn die Zugriffsrechte und/oder Eigentümer entweder beim Verzeichnis /backups nicht stimmen oder bei der .zip Datei (vermutlich stimmen sie dann bei der .sql auch nicht und machen dann später Schwierigkeiten.
Da ist vermutlich bei hochladen per FTP was verrutscht.
Bitte mal per FTP die Zugriffsrechte und Eigentümer sowohl für's Verzeichnis /backups (sollte 755 sein) als auch für die .zip und die .sql Datei (sollte 644 sein).
Eigentümer sollte jeweils der Benutzer sein unter dem der Webserver läuft (oftmals www-data).
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Das mit den Rechten war schon mal ein guter Tipp! Hab sie entsprechend angepasst.
Das Restore läuft jetzt ohne Fehlermeldung durch (Dauer ca. 3s) - aber es wird nichts wiederhergestellt. Keine Seiten, Medien, Templates... alles danach genauso leer wie vorher.
Zusätzlich werden mir jetzt 2 verschiedene WBCE-Versionen im Backend angezeigt. Oben die Warnung auf die veraltete 1.6.0 - links steht aber korrekt 1.6.1 (s. Bild).
Noch irgendwelche Ideen?
Last edited by musenfreund (20.06.2023 18:14:50)
Offline
Hast du per ftp nachgesehen, ob die Seiten physisch da sind?
Offline
Zusätzlich werden mir jetzt 2 verschiedene WBCE-Versionen im Backend angezeigt. Oben die Warnung auf die veraltete 1.6.0 - links steht aber korrekt 1.6.1.
Dass kommt daher, du hast vermutlich die neue Umgebung mit WBCE 1.6.1 aufgesetzt und danach deine alte mit WBCE 1.6.0 importiert. (DB passt nicht mit Filesystem zusammen).
Das Restore läuft jetzt ohne Fehlermeldung durch (Dauer ca. 3s) - aber es wird nichts wiederhergestellt. Keine Seiten, Medien, Templates... alles danach genauso leer wie vorher.
Wenn die obrige Meldung passt sollte der DB Import funktioniert haben .
Was ist den alles als Backup vorhanden?
Ist das Filesystem als Backup vollständig da? Falls ja dann schau in der DB ob die Einträge vorhanden sind. Falls diese da sind, einfach ein das Backup des Filesystems per FTP mit WinSCP hochladen (bitte kein Filezilla verwenden)
Offline
Die Seiten waren nicht vorhanden nach der versuchter Rücksicherung. Inzwischen habe ich den Inhalt von pages-, media- und template-Ordner per Winscp wieder eingespielt.
Per phpmyadmin sehe ich, dass in Tabelle wbcemain_pages alle Seiten eingetragen sind. Im Backend werden sie aber nicht angezeigt. (Ich habe die Installation inzwischen wieder auf 1.6.1 geupdatet).
Muss ich händisch irgendwelche Einträge in der DB oder in config-Dateien ändern oder irgendwelche Dateien gegen gesicherte austauschen?
Offline
Ich habe jetzt festgestellt, dass in der DB, Tabelle 'wbcemain_users' durch das Restore mein alter Benutzer wieder erscheint, aber nicht mehr funktioniert - mein neuer Benutzer aber erscheint nicht als Eintrag in der Tabelle, funktioniert aber. (Habe auch den Browsercache gelöscht, was keine Änderungen an diesem Verhalten bewirkt).
Wie kann das sein?
Offline
das klingt für mich als ob, die alte und neue Installation unterschiedliche Präfixe (#2) verwenden.
Wenn du mir die Zugangsdaten des neuen und alten Admin-Users, sowie die FTP Zugangsdaten per PN sendest sehe ich mir das gerne an.
Offline
So, ich musste mich einige Tage um ein anderes Projekt kümmern, deswegen erst heute ein Update.
Ich konnte die Seite inzwischen wiederherstellen. Allerdings ohne Hilfe von Backup_Plus, sondern per FTP und phpmyadmin und den entsprechend erforderlichen Anpassungen der config.php (weil Migration zu neuem Provider) und der user-table.
Mein Fazit nach diversen Stunden der Fehlversuche und Recherche hier im Forum: Backup_Plus ist in der aktuellen Version NICHT geeignet, eine Sicherung nach dem Wechsel zu einem anderen Provider dort so wiederherzustellen, dass man danach eine funktionierende WBCE-Installation und seine Daten vorfindet, sondern erfordert zusätzlich händische EIngriffe.
Das ist ja an sich auch alles in Ordnung, wenn man das vor dem Einsatz weiß bzw. darüber informiert wird. Ich fände es gut, wenn die Dokumentation zukünftig auf diesen Sonderfall hinweisen würde. Jedenfalls war ich nach dem Lesen der aktuellen Beschreibung irrtümlich davon ausgegangen, das wäre mit dem Modul möglich. (Ich finde z.B. die Dokus zu Installation, Updates und Nutzung von WBCE, wegen ihrer klaren step-by-step Strukturiertheit sehr gut verständlich).
Ein Providerwechsel ist eben eine Situation ist, in der man eine funktionierende Backup- und Restoreroutine braucht.
Ich hoffe, ich trete mit diesen Anmerkungen hier niemandem zu nahe! WBCE ist auf jeden Fall ein cooles CMS, bei dem ich bleiben werde.
Danke für alle Beiträge zu meinen Fragen, sie haben mir weitergeholfen.
Offline
Die Kritik ist berechtigt.
Die Frage ist, ob die Wiederherstellung grundsätzlich funktioniert, d.h. wenn auf derselben Webseite ein vorheriger Zustand wiederhergestellt werden soll.
Wenn dies der Fall ist, wäre zu prüfen, unter welchen Bedingungen dann auch eine Wiederherstellung auf einem anderen System (anderer Server) möglich wäre. Diese Voraussetzungen wären dann in den Hinweisen zum Modul zu ergänzen.
Wenn die Wiederherstellung gar nicht (mehr) funktioniert, müsste diese Option aus dem Modul-Backend entfernt werden, um nicht falsche Erwartungen zu wecken. Dann ist es eben (nur) ein Modul, um etwas komfortabler als mit dem anderen Backup-Modul die Sicherungen des Dateisystems und der Datenbankinhalte zu generieren. (Die sich durchaus für die händische Wiederherstellung/Übertragung benutzen lassen - ich mache das eigentlich immer so, d.h. Sicherung mit Backup Plus und dann händisches Einspielen).
Last edited by florian (26.06.2023 07:33:36)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
So, also ich habe das jetzt mal getestet. Nach folgender Anleitung ist es möglich, die mit Backup Plus erzeugten Daten für einen Serverumzug zu verwenden:
Auf der Ausgangsseite mit Backup Plus eine "CMS-Sicherung" machen
Die SQL-Datei, die Zip-Datei und das Logfile (!) dieser Sicherung herunterladen
Die Zip-Datei mit einem geeigneten Programm öffnen (z.B. 7-Zip) und die config.php aus dem Zip löschen (!)
Falls das Zielsystem eine andere URL hat als die Ausgangsseite: SQL-Datei mit einem geeigneten Editor öffnen (z.B. Notepad++) und per Suchen & Ersetzen alle Vorkommnisse der alten URL durch die neue URL ersetzen, Änderungen speichern
Auf dem Zielsystem eine frische WBCE-Installation (dieselbe Version wie die der Ausgangsseite verwenden!) vornehmen, dabei darauf achten, dass der Datenbankpräfix nicht (!) derselbe ist wie der Präfix der Sicherung der Ausgangsseite. Weiterhin auf korrekte Zeitzone achten (sonst funktioniert das Backupmodul nicht)
Am leeren, neuen WBCE anmelden mit den bei der zuvor erfolgten Installation angegebenen Benutzerdaten
Modul Backup Plus installieren
Backup Plus aufrufen und eine Sicherung "Alle erstellten Seiten" ausführen, damit das /backups-Verzeichnis angelegt wird
Per FTP die SQL-Datei, die Logdatei und die angepasste Zip-Datei der vorherigen Sicherung ins Verzeichnis /backups auf dem Zielsystem kopieren
Auf dem Zielsystem Backup Plus nochmal aufrufen oder F5 drücken, das zu wiederherstellende Ausgangsseiten-Backup müsste nun mit angezeigt werden
Wiederherstellen anklicken und Erfolgsmeldung abwarten
Vom CMS abmelden
config.php in geeigneten Editor öffnen
Zeile define('TABLE_PREFIX', 'XXXX'); anpassen, XXXX = Präfix der gesicherten/wiedereingespielten Website (!)
Änderung speichern
Im Browser die Frontendansicht aufrufen und schauen, ob die Seiten der gesicherten/wiedereingespielten Website erscheinen
Nun im Browser auf der Anmeldeseite (i.d.R. /admin) mit den Zugangsdaten der gesicherten/wiedereingespielten Website anmelden
Ist jetzt leider auch nicht wirklich einfacher als das händische Einspielen, aber es bleibt einem zumindest das Datenbank- und irgendwelches client- oder serverseitiges UnZip-Gerfrickel erspart.
Last edited by florian (26.06.2023 14:37:27)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Ok, das nenne ich mal eine Dokumentation!
Mit dem Test wird nochmal deutlich, dass die WBCE-Bordmittel bzw. das Modul Backup-Plus für den Fall eines Serverwechsels zwischen Backup und Restore einiges an zusätzlicher manueller Bastelarbeit erfordern.
Vielleicht kann man deine 17-Schritt-Anleitung irgendwie in die Doku des Moduls einbinden. Dann weiß man vorher was einen ggf. erwartet und jeder User kann besser einschätzen, ob er sich das selber zutraut oder sich Hilfe organisiert.
(Ich z.B. hab Punkt 5 schon mal falsch gemacht und die Neuinstallation wieder mit dem gleichen Präfix gemacht).
Offline
könnte man nicht eine Setup-routine für diesen Zweck bauen?
Analog zur install oder update Routine.
Ist zwar eher selten so ein Providerwechsel, aber doch eine Möglichkeit....
Offline
@berny: Wäre eine Überlegung wert, ist aber aufwändig. Da müsste dann geprüft werden, ob Zip- und SQL-Dump gültig und vollständig sind, es müsste (scriptkiddiehackersichere) Eingabefelder für die neuen Datenbankdaten geben, die dann in die config.php geschrieben werden, dafür müsste die config.php aus der Sicherung ausgelesen werden, um die entsprechenden Zeilen zu ersetzen und und und...
Zumal ja eben doch irgendwo Anpassungen vorgenommen werden müssen, seien es bei im Datenbankdump gespeicherten Pfad- bzw. URL-Angaben.
Das einfachste ist wirklich, das Zip mit der Dateisicherung hochzuladen und entweder per (Web-)FTP, CLI oder zusätzlich hochgeladenem Unzip-Script* zu entpacken und den Datenbankdump via Adminer oder PHPMyAdmin einzuspielen.
* Zip in "file.zip" umbenennen, an derselben Stelle eine Datei unzip.php folgenden Inhalts hinterlegen, im Browser aufrufen, hinterher beides löschen.
<!doctype html>
<head>
<title>UnZip</title>
<body>
<?php
// assuming file.zip is in the same directory as the executing script.
$file = 'file.zip';
// get the absolute path to $file
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
// extract it to the path we determined above
$zip->extractTo($path);
$zip->close();
echo "$file extracted to $path";
} else {
echo "$file not found";
}
?>
</body>
</html>
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
berny