Fehlermeldungen in Shopware debuggen

Version

5.5.0 oder neuer

Inhaltsverzeichnis

Auf dieser Seite findest Du einige hilfreiche Informationen, welche dir bei dem Verstehen von Fehlermeldungen und der Ermittlung der Ursache helfen werden.

Wie finde ich die Fehlermeldung?

Es kann an einigen Stellen durch vielfältige Gründe zu Fehlern kommen, die jedoch im Logfile nicht zu finden sind. Aber wie findest Du jetzt heraus, woran es jetzt scheitert?

Wenn ein schwerwiegender Fehler aufgetreten ist, merke Dir zuerst den Zeitpunkt, wann der Fehler auftrat! Danach schaue, mit welchen Schritten Du den Fehler reproduzieren kannst und überlege, ob der Fehler aus Shopware selbst oder einem Plugin kommen könnte. Danach begibst Du dich auf die Suche nach der Meldung.

Frontend Error Reporter

Der Frontend Error Reporter ist eine Möglichkeit, Dir schwerwiegende Fehler direkt im Frontend anzuzeigen, statt die "Es ist ein Fehler aufgetreten"-Seite anzuzeigen. Da das Template die Meldungen direkt ausgibt und so auch Deinen Kunden angezeigt wird, empfiehlt sich der Einsatz nur, wenn gerade wenig Traffic auf dem Shop ist oder Du in einer Entwicklungsumgebung arbeitest. Wie Du dieses erweiterte Error Debugging aktivierst, erklären wir Dir unter Erweitertes Error-Debugging.

Log Dateien

Sollte irgendwo im Frontend ein schwerwiegender Fehler auftreten, wird dieser ins Logfile auf dem Server geschrieben, diese Datei findest Du unter /var/log/ auf deinem Server, ein Beispiel wäre hier zum Beispiel core_production-2016-02-01.log. Je nachdem, in welcher Umgebung deine Installation betrieben wird (Live, Testsystem) oder von wo der Fehler kommt (Core, Plugin) kann die Datei auch anders heißen. Wichtig hierbei ist vor allem das Datum. Es wird dabei für jeden Tag eine neue Datei angelegt. Wenn dein Fehler wahrscheinlich aus einem Plugin kommt, dürfte er in einer "plugin_production-DATUM.log" stehen, wenn er eher aus Shopware selbst kommt, steht er in einer "core_production-DATUM.log". Öffne die Datei und suche nach dem Zeitpunkt, zu dem der Fehler auftauchte (ca. minutengenau), hier solltest Du nun eine Fehlermeldung finden, die Dir den Fehler beschreibt. Wie Du diese Meldungen deutest, erklären wir noch.

System-Log im Backend

Hierzu findest Du unter Einstellungen > Logfile den neuen Reiter namens "System-Log" (1). Mit einem Klick auf das Lupensymbol (2) erhältst Du detaillierte Informationen zu den einzelnen Meldungen. Im Bereich "Datei" (3) kannst Du zwischen den einzelnen Log-Dateien wechseln und auch gezielt Log-Dateien herunterladen, wenn Du diese beispielsweise weiterleiten möchtest.

 

Fehlermeldungen per E-Mail senden lassen

In den Grundeinstellungen unter System > Log hast Du die Möglichkeit, Dir Fehlermeldungen per E-Mail senden zu lassen.

 

Diese Einstellung sendet Dir sämtliche Fehler im Shop per E-Mail zu, die auftreten, auch wenn diese den normalen Betrieb nicht stören. Daher ist es nicht sinnvoll, sich im Produktivmodus die Fehler per E-Mail senden zu lassen.

Wie lese ich Fehlermeldungen?

Wir erklären dir hier allgemein, wie Fehlermeldungen aus Shopware analysiert und verstanden werden können.

BereichHinweise zur Analyse
Stack traceHier findest Du Informationen zu den zuletzt aufgerufenen Funktionen. So kannst Du herausfinden, an welcher Stelle eine Funktion aufgerufen wurde, die zum Fehler führte. Häufig werden hier auch Plugin-Namen mit aufgeführt. Dieses Plugins sollten dann der erste Ansatzpunkt sein, wenn Du in die Fehleranalyse gehst.
TimeDiese Information bietet die Option weiter einzugrenzen, ob es regelmäßig oder ggf. zu geplanten Operationen zu diesem Verhalten kommt.
uriHier wird die aufgerufene URL angezeigt. Mit einem manuellen Aufruf der URL kannst Du eingrenzen, ob beispielsweise "nur" der Aufruf einer nicht (mehr) existenten URL, beispielsweise durch einen Bot, die Fehlermeldung hervorgerufen hat. Anderenfalls kann der Ort des Auftretens näher bestimmt werden.
queryLiefert weitere Informationen, ob das Verhalten im Frontend/Backend auftritt, welcher Controller angesprochen wurde, etc.
shopId / shopNameWenn Sprach- und/oder Subshops eingesetzt werden, kannst Du hier sehen, in welchem Shop der Fehler auftrat.

PHP Fehlermeldungen

PHP-Fehler sind etwas schwerer zu debuggen als die anderen, da Du zumeist nur einen "503" oder "500" vom Server zurück bekommst und die Meldung nicht direkt sehen kannst. Um die die Fehler auszugeben, kannst Du ins Error-Log-Verzeichnis deines Servers schauen. Falls Du nicht weißt, wo Du das Verzeichnis findest, frag deinen Hoster, dieser kann Dir die Antwort geben. Danach gibt es 2 Wege:

  • Schaue einmal die Logs durch, taucht für deinen Fehler keine Meldung auf oder es wird nichts geloggt, bitte deinen Hoster, das "Debug-Level" zu erhöhen, damit auch "unkritischere" Fehler geloggt werden. Danach solltest Du eine Ausgabe bekommen und kannst debuggen.
  • Wenn Du über das nötige technische Wissen verfügst, kannst du, sofern Du weißt, wo der Fehler im Quellcode auftritt, an dieser Stelle ein "die" mit Fehlerausgabe einbauen und schauen, was Dir für Fehler angezeigt werden. Vergiss aber nicht, die Datei nach dem debuggen wieder in den Ursprungszustand zu versetzen, damit deine Besucher keine Fehlerseite mit detaillierter Fehlerausgabe sehen.

Template Fehlermeldungen

Template Fehler werden Dir je nach Fehler entweder mittels Error Reporter direkt im Frontend, oder aber in der Log-Datei ausgegeben und sehen so aus:


[2016-02-22 09:43:20] core.ERROR: exception 'SmartyException' with message 'Unable to load template snippet 'frontend/index/headers.tpl' in 'frontend/error/index.tpl|frontend/plugins/seo/index.tpl'' in /home/shopware/www/sw513/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php:127 
Stack trace: 
#0 /home/shopware/www/sw513/engine/Library/Smarty/sysplugins/smarty_internal_template.php(286): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) 
#1 /home/shopware/www/sw513/var/cache/production_201602150844/templates/frontend_Responsive_de_DE_1/46/99/47/469947a92e6ed4db0e2e8a7b3c45ebd31eaf531b.snippet.index.tpl.php(170): Smarty_Internal_Template->getSubTemplate('frontend/index/...', NULL, 'frontend_Respon...', NULL, NULL, Array, 0) 
#2 /home/shopware/www/sw513/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(180): content_56caca285e1fa9_34792271(Object(Enlight_Template_Default)) 
#3 /home/shopware/www/sw513/engine/Library/Enlight/View/Default.php(274): Smarty_Internal_TemplateBase->fetch() 
#4 /home/shopware/www/sw513/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(216): Enlight_View_Default->render(Object(Enlight_Template_Default)) 
#5 /home/shopware/www/sw513/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(242): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default)) 
#6 /home/shopware/www/sw513/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(136): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->render() 
#7 [internal function]: Enlight_Controller_Plugins_ViewRenderer_Bootstrap->onPostDispatch(Object(Enlight_Controller_ActionEventArgs)) 
#8 /home/shopware/www/sw513/engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs)) 
#9 /home/shopware/www/sw513/engine/Library/Enlight/Event/EventManager.php(210): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs)) 
#10 /home/shopware/www/sw513/engine/Library/Enlight/Controller/Action.php(201): Enlight_Event_EventManager->notify('Enlight_Control...', Object(Enlight_Controller_ActionEventArgs)) 
#11 /home/shopware/www/sw513/engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch('genericErrorAct...') 
#12 /home/shopware/www/sw513/engine/Library/Enlight/Controller/Front.php(226): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) 
#13 /home/shopware/www/sw513/engine/Shopware/Kernel.php(153): Enlight_Controller_Front->dispatch() 
#14 /home/shopware/www/sw513/vendor/symfony/http-kernel/HttpCache/HttpCache.php(492): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) 
#15 /home/shopware/www/sw513/engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) 
#16 /home/shopware/www/sw513/vendor/symfony/http-kernel/HttpCache/HttpCache.php(449): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) 
#17 /home/shopware/www/sw513/vendor/symfony/http-kernel/HttpCache/HttpCache.php(349): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(Object(Symfony\Component\HttpFoundation\Request), true) 
#18 /home/shopware/www/sw513/engine/Shopware/Components/HttpCache/AppCache.php(178): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true) 
#19 /home/shopware/www/sw513/vendor/symfony/http-kernel/HttpCache/HttpCache.php(213): Shopware\Components\HttpCache\AppCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true) 
#20 /home/shopware/www/sw513/engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) 
#21 /home/shopware/www/sw513/shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) 
#22 {main} [] {"uid":"51a7455"}

Die Meldung sagt aus, dass ein Template Snippet nicht gefunden werden konnte. In 'frontend/index' wird irgendwo versucht 'frontend/index/headers.tpl' zu laden, welche es aber nicht gibt (oder fehlende Dateirechte aufweist). Prüfe also erst einmal, ob die Datei überhaupt vorhanden ist und ob diese die passenden Rechte besitzt. Falls die Datei nicht vorhanden ist, gibt es 2 Wege: Fehlt die Datei? oder Wird hier die falsche Datei aufgerufen?

Den Fehler kannst Du ausbügeln, in dem Du hier im Beispiel alle Dateien unter 'frontend/index/' öffnest und schaust, wo eine "headers.tpl" includiert (eingebunden) wird. Hast Du die Datei gefunden (Im Beispeil 'frontend/index/index.tpl'), vergleiche diese Datei mit der selben Datei des Standardtemplates. Wird im Standardtemplate die gleiche Datei includiert, fehlt diese und Du musst die Datei wieder beschaffen. Wird die Datei im Standard nicht includiert, wird diese Datei in deinem Template falsch abgefragt. Im Beispiel liegt hier ein Schreibfehler vor und statt header.tpl wird headers.tpl includiert. Du musst also die Datei, in der die falsche Datei includiert wird, ändern und wieder speichern. Danach wird Dir der Fehler nicht mehr angezeigt.

MySQL Fehlermeldungen

MySQL Fehler können Dir zum Beispiel beim Arbeiten im Backend begegnen und diverse Ursachen haben. Merke dir, was Du gemacht hast, als Du diesen Fehler bekommen hast, zum Beispiel einen Artikel oder Eigenschaften gespeichert.


exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '185-38' for key 'PRIMARY'' in /var/www/vhosts/domain.de/swverzeichnis/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:987

Duplicate entry '185-38' besagt, dass versucht wird, einen Wert mit 185-38 zu speichern, den es aber schon gibt. Das kann daran liegen, dass mehrere Benutzer im Backend gerade exakt das gleiche tun (Beide versuchen im gleichen Moment, eine neue Eigenschaft anzulegen) oder es passiert ein Fehler beim Neu-Installieren eines Plugins (Beim Deinstallieren wird etwas nicht aus der Datenbank entfernt, was beim Install aber wieder hnzugefügt werden soll). So kannst Du den Fehler eingrenzen und in der Datenbank schauen, welcher Eintrag hier falsch ist und diesen ggf. händisch löschen.

Wenn Du Änderungen an der Datenbank vornimmst, mach vorher unbedingt ein Backup! Änderungen an der Datenbank sind immer mit absoluter Vorsicht zu genießen, tu das nur, wenn Du dich damit auskennst!

Bekannte Fehlermeldungen und deren Ursache

In diesem Abschnitt findest Du Fehlermeldungen, die uns aus Support-Anfragen und der Community bekannt sind. Passend dazu gibt es auch mögliche Lösungen bzw. Ursachen.

Allgemein oder "Ups! Ein Fehler ist aufgetreten"

"Ups! Ein Fehler ist aufgetreten!" wird im Frontend in den meisten Fällen angezeigt, wenn ein sogenannter 503 ("Service Unavailable") Fehler vorhanden ist. Hierbei handelt es sich um einen Skriptfehler, der durch verschiedene Faktoren ausgelöst werden kann. In vielen Fällen sorgen Plugins oder inkonsistente Datensätze in der Datenbank für Fehlermeldungen. Das erweiterte Debugging ist daher unerlässlich für das weitere Vorgehen, da Du ja ersteinmal wissen musst, was genau der Fehler ist bzw. woher er kommt.

The prodived X-CSRF-Token is invalid

 


exception 'Shopware\Components\CSRFTokenValidationException' with message 'The provided X-CSRF-Token is invalid. Please go back, reload the page and try again.' in /var/www/vhosts/domain.com/httpdocs/shopware/engine/Shopware/Components/CSRFTokenValidator.php:151
Stack trace:
#0 [internal function]: Shopware\Components\CSRFTokenValidator->checkFrontendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs))
#2 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#3 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Library/Enlight/Controller/Action.php(143): Enlight_Event_EventManager->notify('Enlight_Control...', Object(Enlight_Controller_ActionEventArgs))
#4 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch('indexAction')
#5 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Library/Enlight/Controller/Front.php(226): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#6 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Shopware/Kernel.php(176): Enlight_Controller_Front->dispatch()
#7 /var/www/vhosts/domain.com/httpdocs/shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 /var/www/vhosts/domain.com/httpdocs/shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 /var/www/vhosts/domain.com/httpdocs/shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(275): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#11 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Shopware/Components/HttpCache/AppCache.php(133): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#12 /var/www/vhosts/domain.com/httpdocs/shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(206): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#13 /var/www/vhosts/domain.com/httpdocs/shopware/engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /var/www/vhosts/domain.com/httpdocs/shopware/shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 {main}

Die Bedeutung

Seit Shopware 5.2.0 verwenden wir zur Erhöhung der Sicherheit den sogenannten X-CSRF-Token (cross site request forgery). Damit möchten wir verhindern, dass vom Kunden nicht eigenwillig durchgeführte Aktionen ausgeführt werden. Dafür gleichen wir beim Austausch von Daten einen Sicherheits-Token ab. Wird der Token nicht richtig generiert, ist falsch oder gar nicht vorhanden, erscheint eine Fehlermeldung, die über den invaliden Token informiert. Das Eingrenzen der Fehler ist hierbei in vielen Fällen schwierig, da Du zu aller erst ein reproduzierbares Muster brauchst, um den Fehler "auf Abruf" nachzustellen, da nur so die Beseitigung möglich ist. Es kann aber auch passieren, dass der X-CSRF-Token zwar Ursache ist, aber nicht der entsprechende Fehler angezeigt wird, daher solltest du zusätzlich folgende Dinge prüfen:

  • Individuelles Theme: Prüfe, ob das Verhalten auch im Standard Responsive Theme auftaucht. Änderungen bei der Übergabe der Formulardaten o.ä. können einen invaliden CSRF-Token hervorrufen.
  • Plugins: Deaktiviere zunächst alle Plugins in Deinem Shop und führe im Anschluss den Workflow zum Reproduzieren des Fehlers durch. Sollte dieser nicht mehr auftauchen können die Plugins schrittweise aktiviert werden. Wenn dann nach Aktivierung eines Plugins der Fehler wieder auftritt, ist die Ursache zumeist das Plugin.
  • Updates: Verwende stets die aktuellste Shopware Version, da wir regelmäßig Verbesserungen in diesem Bereich durchführen.

Deaktivieren des X-CSRF-Tokens

Wenn "alle Stricke reißen" empfielt es sich, den Token-Schutz temporär zu deaktivieren. In manchen Fällen können "normale" Fehlermeldungen hierdurch verschleiert werden, die im Anschluss analysiert werden sollten. Das Deaktivieren des Schutzes bedeutet nicht automatisch, dass Dein Shop jetzt völlig schutzlos ist. Hier bietet Shopware weitere Sicherheitsmaßnahmen, die auch weiterhin greifen - für eine optimale Sicherheit sollte man die Ursache für einen invaliden Token aber stets herausfinden. Unter CSRF-Schutz deaktivieren findest du das passende Konfigurations-Schnipsel.

Integrity constraint violation

Die Bedeutung

Diese SQL Fehlermeldung deutet auf ein Problem mit den Datensätzen in der Datenbank hin, die durch defekte Foreign Keysoder doppelte Einträge hervorgerufen werden.

Möglichkeiten zum Beheben

Zunächst ist es ratsam eine Foreign Key Reparatur durchzuführen, dadurch werden die Beziehungen zwischen den Standard Core-Tabellen neu eingepflegt - beachte jedoch, dass Plugin Tabellen davon nicht betroffen sind! Sollte in der Fehlermeldung auf einen "Duplicate Entry" hingewiesen werden, empfiehlt es sich die betroffene Tabelle auf doppelte Einträge zu prüfen und diese Einträge zu löschen.

Bestellübersicht lässt sich nicht mehr öffnen


Ups! Ein Fehler ist aufgetreten! Die nachfolgenden Hinweise sollten Ihnen weiterhelfen. in vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php on line 781 Stack trace: 
#0 engine/Shopware/Controllers/Backend/Order.php(1038): Doctrine\ORM\AbstractQuery->getOneOrNullResult(2) 
#1 var/cache/production_201704210836/proxies/ShopwareControllersBackendOrderProxy.php(6): Shopware_Controllers_Backend_Order->getList(NULL, Array, '0', '20') 
#2 engine/Library/Enlight/Hook/HookManager.php(186): Shopware_Proxies_ShopwareControllersBackendOrderProxy->executeParent('getList', Array) 
#3 var/cache/production_201704210836/proxies/ShopwareControllersBackendOrderProxy.php(38): Enlight_Hook_HookManager->executeHooks(Object(Shopware_Proxies_ShopwareControllersBackendOrderProxy), 'getList', Object(Enlight_Hook_HookArgs)) 
#4 engine/Shopware/Controllers/Backend/Order.php(271): Shopware_Proxies_ShopwareControllersBackendOrderProxy->getList(NULL, NULL, '0', '20') 
#5 engine/Library/Enlight/Controller/Action.php(159): Shopware_Controllers_Backend_Order->getListAction() 
#6 engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch('getListAction') 
#7 engine/Library/Enlight/Controller/Front.php(223): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) 
#8 engine/Shopware/Kernel.php(182): Enlight_Controller_Front->dispatch() 
#9 vendor/symfony/http-kernel/HttpCache/HttpCache.php(491): Shopware\Kernel->handle(Object(Enlight_Controller_Request_RequestHttp), 1, true) 
#10 engine/Shopware/Components/HttpCache/AppCache.php(266): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) 
#11 vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) 
#12 engine/Shopware/Components/HttpCache/AppCache.php(103): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true) 
#13 shopware.php(117): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) #14 {main}  

Die Fehlermeldung

In den meisten Fällen existieren hier mehrere Bestellungen mit gleicher Bestellnummer - in Shopware darf eine Bestellnummer nur einmal vorkommen, weshalb es im Standard auch nicht möglich ist eine solche doppelt anzulegen. Schnittstellen zu anderen Verkaufsportalen oder andere Plugins können diesen Mechanismus in manchen Fällen aushebeln, falls dies der Fall ist, setze Dich mit dem Anbieter der jeweiligen Schnittstelle in Verbindung.

Die Behebung

Hierfür empfiehlt sich unser Beispiel SQL-Statement, welches automatisch doppelte Bestellnummern ermittelt. Diese müssen im Anschluss bereinigt werden und die Funktionalität ist widerhergestellt.

Einkaufswelten-Modul lässt sich nicht öffnen

Die Fehlermeldung

Öffne die Chrome Entwicklerkonsole und versuche dann, die das Einkaufswelten-Modul aufzurufen. Unter "Netzwerk" solltest Du jetzt den dazugehörigen XHR Request finden (Emotion?=xxx). Gehe dort in der Preview zur letzten Zeile und prüfe, ob dort folgender (ähnlicher) Code enthalten ist:


Mac OS X        	2��ATTR��?�?com.apple.quarantineq/0001;58b7f6ba;Cyberduck;AB2E36E7-4E18-42DB-9968-B85541426179

Ursache / Mögliche Behebung

Hier wurde durch ein nicht signiertes FTP Programm auf Deinen Mac eine "Quarantäne" Kennzeichnung beim Upload der Shopware Dateien hinzugefügt, welcher aber nicht von Shopware interpretiert werden kann. Die Lösung wäre hier das erneute Hochladen der Dateien mit einem entsprechend signierten Programm.

Fehlermeldung beim Speichern des Artikels: "undefined"

Die Bedeutung

In manchen fällen kann es beim Speichern des Artikels zu einem Fehler in der schwarzen Infobox im Backend kommen, obwohl der Artikeldatensatz korrekt gespeichert wird. Grund hierfür ist, dass der Cache nicht durch den Reverse Proxy invalidiert werden kann. Im PHP Error Log findet sich in solchen Fällen folgende Fehlermeldung:


 
Fatal error:  Call to a member function getId() on null in 
 
/var/www/html/engine/Shopware/Components/DependencyInjection/Bridge/Session.php on line 59
 

Die Behebung

 

Hier ist zunächst die Ursache beim Hoster zu suchen. In vielen Fällen reicht es jedoch bereits aus, die Shop-URL unter Einstellungen > Caches/Performance > Einstellungen > HTTP Cache unter "Alternative Proxy URL" zu hinterlegen. Es kann jedoch auch ein externer Proxy durch den Hoster genutzt werden, weshalb du hier im Zweifel direkt den Hoster kontaktieren solltest.

Tweaks für die config.php

Die config.php ist die erste Konfiguration, die Shopware bei der Ausführung lädt. Durch das Hinzufügen von neuen Konfigurations-Snippets lassen sich viele nützliche Tools freischalten, die dir unter anderem auch beim Debugging helfen. Du kannst dir alle verfügbaren Konfigurationen in der "Default Config" auf Github anschauen.

Erweitertes Error-Debugging

Den Error Reporter aktivierst Du in der config.php durch hinzufügen der folgenden Zeilen:


'front' => array(
  'showException' => true,
  'noErrorHandler' => false,
),
 
//Low-Level PHP-Fehler ab Shopware 5.2.0
'phpsettings' => [
    'display_errors' => 1,
]

Deine config.php sieht dann in etwa so aus:


<?php return array (
  'db' => 
  array (
    'host' => 'HOST',
    'port' => 'PORT',
    'username' => 'USER',
    'password' => 'PASSWORD',
    'dbname' => 'DBNAME',
  ),
  'front' => array(
    'showException' => true,
    'noErrorHandler' => false,
  ),
 
  //Low-Level PHP-Fehler ab Shopware 5.2.0
  'phpsettings' => [
    'display_errors' => 1,
  ]
);

Nachdem Du die Datei gespeichert hast, werden die Fehler direkt im Frontend ausgegeben. 

HTTP-Cache Debugging aktivieren

Manchmal möchte man überprüfen, ob die Seiten die man aufruft auch wirklich im Cache sind. Hier bietet sich folgendes Snippet an, welches den Symfony Debug-Cache aktiviert.


// Http-Cache
'httpCache' => [
    'enabled' => true, // true or false
    'debug' => true,
],

Öffnest du nun die Entwickler-Konsole deines Browsers und schaust dir unter "Netzwerk" die Antwort des initialen Document-Request an, siehst du dort folgendes:


X-Content-Digest:en1dac22cb10b9a66cb6590a7819384d54fcb637e838f65c40b655b07c85cd5f7d
X-Shopware-Allow-Nocache:price-1
X-Shopware-Cache-Id:;c3;
X-Symfony-Cache: GET /: miss, store;
    GET /?action=shopMenu&controller=index&module=widgets: fresh;
    GET /?controller=compare&module=widgets: miss, store;
    GET /?action=menu&controller=index&group=gLeft&module=widgets: miss, store;
    GET /?action=info&controller=checkout&module=widgets: miss, store
  • miss = Keine Cache-Datei vorhanden
  • fresh = Controller  / Seite liegt im Cache

CSRF-Schutz deaktivieren

Falls es zu Invaliden Tokens im Frontend kommt, kann es hilfreich sein, temporär diese Funktion zu deaktivieren.

Füge folgende Code-Zeilen in die config.php ein:


'csrfProtection' => [
    'frontend' => false,
    'backend' => false
]

Versendete Mails als Datei auf dem Server speichern

Hat man Probleme mit dem Versand von Mails, weiß man erstmal nicht wo man anfangen soll. Durch das Aktivieren der Mail-File Config sorgst Du dafür, dass alle Mails als Datei gespeichert werden.


'mail' => [
    'type' => 'file'
],

 

Ziel-Pfad festlegen:


'mail' => [
    'type' => 'file',
    'path' => $this->DocPath().'mails'
],

Beispiel Konfiguration für Entwickler

Hier deaktivieren wir sämtliche Caches, sowie den Template-Cache. Dadurch sind Änderungen direkt sichtbar, ohne das Theme konfigurieren zu müssen.

Wende diese Konfiguration nicht in deinem Produktivsystem an, da die Performance dadurch massiv beeinflusst wird.


'front' => [
    'showException' => true,
    'throwExceptions' => true,
    'noErrorHandler' => false,
],
 
//Zeige Low-Level PHP-Fehler
'phpsettings' => [
    'display_errors' => 1,
],
 
// Template-Cache
'template' => [
    'forceCompile' => true,
],
 
// Backend-Cache
'cache' => [
    'backend' => 'Black-Hole',
    'backendOptions' => [],
    'frontendOptions' => [
        'write_control' => false
    ],
],
 
// Model-Cache
'model' => [
    'cacheProvider' => 'Array' // supports Apc, Array, Wincache and Xcache
],
 
// Http-Cache
'httpCache' => [
    'enabled' => true, // true or false
    'debug' => true,
],

Ich benötige Unterstützung bei der Ermittlung der Ursache

Shopware bietet dir hier verschiedene Möglichkeiten um Unterstützung bei der Analyse einer Fehlermeldung zu erhalten. Primär unterstützen wir Dich gerne im Technischen Support sofern Du eine kostenpflichtige Software-Subscription für Deine kommerzielle Shopware Version gebucht hast. Hier profitierst Du vom Service des Herstellers mit gesicherten Reaktionszeiten. Alternativ kannst Du Dich auch an unsere Community im Forum oder an einen unserer zahlreichen Shopware Partner wenden.