Nach einem Shopware 6 Update kann es unter Shopware 6.7.14.0, 6.7.14.1 und 6.7.14.2 dazu kommen, dass sich der Shop oder die Administration nicht mehr aufrufen lässt und stattdessen ein 500 Internal Server Error erscheint. Ursache ist eine Inkompatibilität zwischen der neuesten Twig-Version (ab 3.29) und dem Shopware Core-Compiler.
Fehlermeldung
Im Fehlerprotokoll oder auf der Fehlerseite erscheint eine Meldung wie diese:
ParseError: syntax error, unexpected token "public" invar/cache/.../twig/...php
Ursache
Mit der Version 3.29 hat Twig die interne Architektur grundlegend verändert, wie Makros ({% macro %}) in ausführbaren PHP-Code kompiliert werden. Der Shopware-eigene Template-Compiler greift tief in diesen Prozess ein, ist aber für diese neue Twig-Struktur in den Versionen 6.7.14.0 bis 6.7.14.2 noch nicht vollständig angepasst. Der Compiler generiert daraufhin syntaktisch fehlerhaften PHP-Code, bei dem eine Methode (public function) fälschlicherweise direkt als Wert in ein Array geschrieben wird.
Sobald ein Plugin oder eine App (wie z.B. die Trusted Shops Integration) in ihren Templates reguläre Makros verwendet, versucht PHP diesen kaputten Cache-Code zu laden und crasht sofort mit einem ParseError.
Der offizielle Quick Fix
Shopware hat für solche Fälle ein spezielles Metapaket bereitgestellt, welches bekannte, inkompatible Abhängigkeiten blockiert. Um das Problem zu beheben, muss dieses Conflicts-Paket installiert und Twig damit auf eine funktionierende Vorgängerversion gedowngradet werden.
Führen Sie dazu folgende Befehle in Ihrem Shop-Hauptverzeichnis über die Konsole aus:
composer config repositories.shopware-conflicts composerhttps://shopware.github.io/conflicts/ composer require shopware/conflicts -W
Wichtig: Der Parameter -W (bzw. --with-all-dependencies) ist hier zwingend erforderlich. Ohne diesen Parameter bricht Composer die Installation mit einem Konfliktfehler ab, da es festgeschriebene Pakete wie Twig standardmäßig nicht downgradet.
Anschließend muss der kompilierte Twig-Cache zwingend hart über das Dateisystem gelöscht werden, damit die fehlerhaften PHP-Klassen verschwinden und mit der korrekten Twig-Version neu aufgebaut werden können:
rm -rf var/cache/*
Keine Plugins vorschnell deaktivieren
Da der Fehler oft in Verbindung mit bestimmten Apps oder Plugins im Log auftaucht (weil deren Templates den Kompilierungs-Crash auslösen), vermutet man den Fehler zunächst bei der jeweiligen Erweiterung. Ein Deaktivieren der Plugins verschiebt das Problem jedoch meist nur auf das nächste Plugin, das Makros nutzt. Das Problem liegt tief im Core-Compiler, nicht im Code der Erweiterungen.
Fazit
Wenn Ihr Shopware System unter den Versionen 6.7.14.0, 6.7.14.1 oder 6.7.14.2 plötzlich mit einem "unexpected token 'public'" ParseError aussteigt, liegt dies an einem Architektur-Konflikt mit Twig 3.29+. Das Hinzufügen des offiziellen shopware/conflicts-Pakets zwingt das System zu einem Downgrade auf eine kompatible Twig-Version und macht Ihren Shop sofort wieder lauffähig.
Benötigen Sie Unterstützung bei Composer-Abhängigkeiten, Shopware-Updates oder der Fehleranalyse? Die Experten von 8works unterstützen Sie gerne bei der schnellen Behebung von Update-Problemen und sorgen dafür, dass Ihr Shop wieder zuverlässig läuft.