Debuggen

Allgemeines

Wenn Shopware im Produktivmodus betrieben wird, werden in den meisten Fällen nur allgemeine Meldungen ausgegeben, anhand derer es nicht unbedingt möglich ist, die Ursache eines Fehlers identifizieren zu können.
Es gibt jedoch einige Möglichkeiten die Fehlerursache einzugrenzen. Oftmals ist es dafür notwendig die Uhrzeit zu kennen, zu der ein Fehler gemeldet wurde und das die Fehlerkonditionen reproduzierbar sind.

Ereignis Logs

Diese findest du unter Einstellungen > System > Ereignis-Logs. Eine ausführlichere Beschreibung dieses Programmpunktes ist hier vorhanden: Ausführlichere Beschreibung des Event-Logs.

Wenn in der Storefront einem Kunden die Meldung „Es ist ein Fehler aufgetreten“ angezeigt wird, kann das Ereignis-Log Einträge enthalten, die eine Eingrenzung der Ursache ermöglichen. In der jeweiligen Nachricht findest du den Hinweis „Failed …“ oder das Wort „Error“. Die vollständige Meldung kannst du einsehen, wenn du auf der rechten Seite auf das Kontextmenü klickst und dort Details anzeigen auswählst.

Diese Meldungen sind hilfreich, wenn der Fehler z.B. durch den E-Mail Versand, eine Versandmethode, unvollständige Daten im Produkt usw. ausgelöst werden.

Speicherort der Shopware-Logdateien

Die durch Shopware erstellten Logdateien werden im Verzeichnis /var/log/ abgelegt.
Wenn in der .env-Datei der Produktiv-Modus aktiviert ist, werden in der prod.log nur schwerwiegende Fehler protokolliert.
Sollte der Entwickler-/Debug-Modus aktiv sein, so werden die Logeinträge in die dev.log geschrieben. Da hier jegliche Meldungen gespeichert werden, sollte der Modus nur aktiviert werden, wenn ein gezieltes Debugging notwendig ist, um ein starkes anwachsen der Logdatei-Größe zu vermeiden.

In den Shopware Protokollen werden der Fehlertyp und Hinweise auf das Programm ausgegeben, in dem der Fehler aufgetreten ist. Je nach Umfang des Protokolls vereinfacht es die Suche, wenn der ungefähre Zeitpunkt bekannt ist, zu dem der Fehler ausgelöst wurde, dessen Ursache nun festgestellt werden soll.

Wie das Umschalten zwischen Produktiv und Entwicklermodus erfolgt zeigen wir Euch im nächsten Abschnitt

Logdateien von Erweiterungen

Im Verzeichnis /var/log/ findest du neben den Shopware Logdateien ebenfalls Logdateien deiner Erweiterungen, wie beispielsweise von PayPal.
Beachte jedoch, dass nicht jede Erweiterung  automatisch Logdateien anlegt. Kontaktiere im Zweifel am besten direkt den Hersteller der Erweiterung.

Aktivieren des Debug- bzw. Entwicklermodus

Wie oben erwähnt, können für die Protokollierung von Fehlern zwei Modi genutzt werden. Der Wechsel des Modus ist über die allgemeine Konfigurationsdatei von Shopware möglich.
Die Datei ".env" findest du auf dem Webserver im Shopware-Hauptverzeichnis.

Bitte beachte, das Dateien, deren Dateiname mit einem "." beginnen, standardmäßig ausgeblendet werden und es je nach Aufruf des Verzeichnisses daher erforderlich sein kann, diese über eine Programmeinstellung einzublenden.

In der Datei änderst du die Zeile

APP_ENV=prod

in

APP_ENV=dev


Anschließend ist es erforderlich, den Cache zu leeren.
Dies ist über die Konsole mittels des Befehls

php bin/console cache:clear

möglich.

Das Aktivieren des Entwicklermodus ist sinnvoll, wenn du bei der Überprüfung des Ereignis-Logs oder der Shopware Protokolle keinen Hinweis gefunden hast, wodurch der Fehler ausgelöst wurde, dem du auf der Spur bist.

Mit der Aktivierung des DEV-Modus bzw. Debugmodus sind die Gefahren verbunden, dass sensible Daten sichtbar werden und ein sehr viel höherer Ressourcenverbrauch.
Daher aktiviere diesen Modus nur für eine kurze Zeitdauer, in der du konkret eine Funktionalität prüfen möchtest. Auf keinen Fall darf er dauerhaft aktiviert bleiben.

Die Meldungen im Entwicklermodus fallen sehr viel ausführlicher aus. Da nun auch Warnungen und Debug Meldungen ins Protokoll geschrieben werden, vervielfacht sich der Platzbedarf für die Datei. Im Frontend kann der Modus dazu führen, dass anstelle der Shopseite eine ausführliche Fehlermeldung angezeigt wird, unter anderem weil nun auch Fehler aus dem Framework aufgeführt werden.

Wir empfehlen daher den Entwicklermodus entweder nur für den jeweiligen Debugvorgang zu aktivieren oder für die Auswertung ein Testsystem anzulegen. Dennoch ist es auch in einem Testsystem erforderlich, die Größe der dev.log im Auge zu behalten, da die Datei relativ schnell anwächst und viele Editoren Dateien in GB-Größe nicht mehr öffnen können.

Weitere Shopware-unabhängige Log-Dateien

Neben den von Shopware bereitgestellten Log-Dateien kann es hilfreich/erforderlich sein, in die Access-Logs des Servers oder auch in die PHP-Logdateien zu sehen.
Da die Speicherorte dieser Logdateien je nach Serverkonfiguration unterschiedlich sein können, kann dir hier sicherlich der Support Deines Hosters weiterhelfen, wo Du diese findest.

Checkliste

Wenn das Lesen der Logs keinen Aufschluss über die Fehlerquelle gegeben hat, lässt sich das Problem in den meisten Fällen über folgenden Guide debuggen.

Erweiterungen deaktivieren

Die häufigste Fehlerquelle sind Erweiterungen. Setze das Theme der Verkaufskanäle auf das Standard Shopware Theme und deaktiviere im Anschluss alle Drittanbietererweiterungen. Dies kann man einzeln und händisch über das Admin oder die Shell machen oder aber auch auf einmal per SQL Query. 

Die Lösung via SQL Query lohnt sich, sobald sehr viele Erweiterungen installiert sind und das Deaktivieren viel Zeit in Anspruch nehmen würde. Eine Anleitung zum Deaktivieren der Drittanbieterweiterungen haben wir unter Shopware 6 - Tutorials & FAQs - SQL Tipps & Tricks

Wenn das Problem nach dem Deaktivieren der Drittanbieterweiterungen nicht mehr auftritt, aktiviere einzeln Erweiterungen, bis du die verantwortliche Erweiterung gefunden hast. Im Shopware Account kannst du dann ein Ticket für den Erweiterungs-Support einstellen.

Core files überprüfen

Sollte das Problem nach dem Deaktivieren der Erweiterungen immer noch auftreten, überprüfe einmal die Core Dateien auf Korrektheit. Oftmals werden/wurden Core Dateien durch Erweiterungen oder Ähnliches modifiziert.

EIne Methode zum Überprüfen der Dateien wäre die file-checker.php. Eine andere Methode wäre die Erweiterung FroshTools.

Issuetracker

Falls das Problem in einer neuen Umgebung nicht auftreten sollte, die o.g Schritte jedoch auch nicht geholfen haben, ist es Zeit bei vorhandener Subscription ein Support-Ticket zu erstellen. Oder falls keine Subcription vorhanden ist, auf eine der folgenden Plattformen zurückzugreifen: 

Wenn die o.g Schritte nicht geholfen haben, sich das Problem jedoch in einer neuen Umgebung reproduzieren lässt, handelt es sich mit großer Wahrscheinlichkeit um einen Bug in Shopware 6.

Erstelle in diesem Fall bitte ein Issueticket unter https://issues.shopware.com/

Vergewissere dich vorher bitte mittels Suchfunktion im Issuetracker, ob das selbe Problem vielleicht schon gemeldet wurde.

War dieser Artikel hilfreich?