Kurz gesagt: Wenn dein Shop nach einem Update nur noch die Wartungsseite zeigt, ist das Update meistens nicht vollständig durchgelaufen. Den Wartungsmodus einfach abzuschalten, ist dann riskant, weil Code und Datenbank womöglich nicht zusammenpassen. Erst das Update sauber abschließen, dann den Shop prüfen und erst danach den Wartungsmodus beenden.
Warum der Shop im Wartungsmodus hängt
Während eines Updates schaltet Shopware die Verkaufskanäle in den Wartungsmodus, damit keine Kunden auf einen halb aktualisierten Shop treffen. Am Ende des Updates wird der Wartungsmodus wieder abgeschaltet. Bricht das Update vorher ab, etwa durch einen Timeout, zu wenig Speicher oder einen Fehler in einem Plugin, bleibt der Wartungsmodus aktiv.
Shopware beschreibt die Reihenfolge eines Updates auf dem Server in der Anleitung zu Shopware-Updates so:
bin/console sales-channel:maintenance:enable --allbin/console system:update:preparebin/console system:update:finishbin/console sales-channel:maintenance:disable --all
Hängt der Shop im Wartungsmodus, ist das Update in der Regel irgendwo vor Schritt 4 stehen geblieben.
Schritt 1: Nicht sofort abschalten
Der naheliegende Reflex ist, den Wartungsmodus auszuschalten. Das geht in der Administration im Verkaufskanal unter „Status“ oder auf der Konsole mit bin/console sales-channel:maintenance:disable --all. Wenn das Update aber nicht fertig ist, siehst du danach oft einen Fehler 500 statt der Wartungsseite, oder schlimmer: Der Shop läuft scheinbar, aber Checkout oder Bestellmails funktionieren nicht.
Besser: Lass den Wartungsmodus an und schau dir den Shop selbst trotzdem an. Dafür gibt es im Verkaufskanal eine Whitelist für IP-Adressen. Trag dort deine eigene IP ein, dann siehst du den Shop, während Kunden weiter die Wartungsseite bekommen. Wie das funktioniert, steht in der Shopware-Dokumentation zu Verkaufskanälen.
Schritt 2: Prüfen, wie weit das Update gekommen ist
- Welche Version ist installiert? In der Administration oder in der
composer.locksiehst du, welche Shopware-Version der Code inzwischen hat. - Was steht im Log? Die Fehlermeldung des abgebrochenen Updates steht im Shopware-Log unter
var/log. Wenn Shopware gar nicht mehr startet, im PHP- oder Webserver-Log beim Hoster. - Lief das Update über die Administration oder über die Konsole? Über die Administration bricht ein Update eher an Zeitlimits des Hosters ab. Auf der Konsole gibt es diese Grenze meist nicht.
Schritt 3: Das Update zu Ende bringen
Mach vorher ein Backup von Datenbank und Dateien, falls du keins von direkt vor dem Update hast.
Ist der neue Code bereits vollständig da, führst du die fehlenden Schritte auf der Konsole aus: bin/console system:update:finish führt die Datenbank-Migrationen und weitere Update-Aufgaben aus. Shopware weist ausdrücklich darauf hin, dass die Migrationen zur Version des installierten Codes passen müssen. Läuft system:update:finish ohne Fehler durch, leerst du mit bin/console cache:clear den Cache.
Bricht system:update:finish mit einer Fehlermeldung ab, nennt diese meistens ein Plugin oder eine Migration. Dann ist das Plugin die eigentliche Baustelle: Entweder gibt es eine neuere Version vom Hersteller, oder das Plugin muss vorübergehend deaktiviert und später angepasst werden.
Schritt 4: Prüfen, dann freischalten
Teste über deine freigeschaltete IP mindestens:
- Startseite, Kategorie und Produktseite
- Suche
- Warenkorb und Checkout bis zur Bestellung, mit einer Testzahlungsart
- Kundenkonto und Login
- die Administration, vor allem Bestellungen und Plugins
Fehlen in der Storefront Styles oder Skripte, hilft oft bin/console theme:compile. Erst wenn alles funktioniert, schaltest du den Wartungsmodus mit bin/console sales-channel:maintenance:disable --all oder in der Administration ab.
Wann ein Rückweg besser ist
Wenn das Update an einem Plugin scheitert, das sich nicht kurzfristig reparieren lässt, und der Shop dringend online muss, ist der Weg zurück auf den Stand vor dem Update oft die bessere Wahl. Dafür brauchst du Code und Datenbank vom selben Zeitpunkt. Nur den alten Code zurückzuspielen reicht nicht, wenn bereits Migrationen gelaufen sind. Bedenke außerdem, dass Bestellungen seit dem Backup verloren gehen, wenn du die Datenbank zurücksetzt. In einem Shop, der nur kurz im Wartungsmodus war, sind das in der Regel keine.
So passiert es beim nächsten Mal nicht
- Erst auf einer Kopie testen. Ein Testupdate auf Staging oder einer lokalen Kopie zeigt Plugin-Probleme, bevor Kunden sie sehen.
- Größere Updates auf der Konsole ausführen, nicht über die Administration, wenn dein Hoster kurze Zeitlimits hat.
- Plugins vorher prüfen. Gibt es für jedes Plugin eine Version für die neue Shopware-Version? Verwaiste Plugins sind der häufigste Grund für abgebrochene Updates.
- Backup direkt vor dem Update, nicht vom Vortag.
Wenn du das nicht jedes Mal selbst machen willst: Im Update-Paket teste ich Updates vor dem Einspielen auf einer Kopie. Hängt ein großer Versionssprung an einzelnen Plugins, prüft der Kompatibilitäts-Check, welche davon angepasst werden müssen.
Häufige Fragen
Wie lange darf ein Shopware-Update dauern?
Ein normales Patch-Update ist auf der Konsole meist in wenigen Minuten durch. Große Versionssprünge mit vielen Migrationen dauern länger. Wenn sich nach einer halben Stunde nichts mehr tut, ist das Update sehr wahrscheinlich abgebrochen.
Kann ich den Wartungsmodus einfach in der Datenbank abschalten?
Technisch ja, aber damit löst du das eigentliche Problem nicht. Wenn das Update nicht fertig ist, läuft der Shop danach fehlerhaft. Nutz lieber die IP-Whitelist, um den Shop zu prüfen, und schalte den Wartungsmodus erst ab, wenn alles funktioniert.
Was, wenn ich keinen Konsolenzugang habe?
Viele Hoster bieten SSH-Zugang an, manchmal muss er erst im Kundenbereich aktiviert werden. Ohne Konsole lässt sich ein abgebrochenes Update nur schwer sauber abschließen. Dann lohnt sich Notfall-Hilfe, bevor weitere Versuche über die Administration den Zustand verschlimmern.