FAQ: Fehlermeldungen und deren Ursachen

Gültig ab Version:
5.2.0

Vorwort

In diesem Beitrag findest Du häufige Fehlermeldungen und mögliche Lösungen. In vielen Fällen kannst Du hier einen Lösungsansatz erhalten. Fehlermeldungen werden in Shopware nicht unmittelbar an's Frontend gereicht, um dem Kunden ein angenehmeres Erlebnis zu bieten, da er den Bezug zum Shop nicht direkt verliert. Wenn Du Fehlermeldungen also zu Debugging-Zwecken aktivieren willst, schau in unseren Artikel Fehlermeldungen in Shopware debuggen, hier erfährst Du, wie Du Fehlermeldungen direkt im Frontend ausgeben kannst, um die Fehlersuche zu bescheunigen.

Frontend Fehlermeldungen

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 bewiesen werden kann. 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-Token

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. Füge folgende Code-Zeilen in die config.php ein:

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

Die Datei sollte im Anschluss wie folgt aussehen:

 
<?php return array (
  'db' => 
  array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'dbuser',
    'password' => 'dbpasswd',
    'dbname' => 'dbname',
  ),
  'csrfProtection' => [
    'frontend' => false,
    'backend' => false
]
);
 

SQL Fehlermeldungen

SQL Fehlermeldungen deuten oft auf inkonsitente oder fehlende Datensätze hin, können aber auch durch schlecht implementierte Datenbankoperationen bei Plugins verursacht werden. Oft können hier auch bestimmte Spalten/Tabellen fehlen. Nachfolgend findest Du hier einige Beispiele und deren Lösungsansatz.

Integrity constraint violation

Die Bedeutung

Diese SQL Fehlermeldung deutet auf ein Problem mit den Datensätzen in der Datenbank hin, die durch defekte Foreign Keys oder 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 zu löschen.

Backend Fehlermeldungen

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 hier auch nicht möglich ist. 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&#65533;&#65533;ATTR&#65533;&#65533;?&#65533;?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.

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.

Weitere interessante Artikel:

Artikel-Attribute und Eigenschaften in die Suche einbeziehen

Vorwort Ab Shopware 5.1.0 hast Du die Möglichkeit direkt im Shopware Core die Frontend-Suche um die Freitextfelder zu erweitern. Zusätzlich kannst Du mit der Intelligenten Suche die Frontend-Suche auch um die Eigenschaften / Filter...

weiterlesen

Datenschutz Hinweis in die Registrierung einbauen

Einleitung An allen Stellen die personenbezogene Daten verarbeiten, solltest Du einen Hinweis auf die Datenschutzbestimmungen platzieren. Hier findest Du ein kleines Tutorial, wie Du einen solchen Hinweis in deinem Theme einbauen kannst. Als...

weiterlesen

Wie erstelle ich ein Support-Ticket

Vorwort Dieser Artikel beschreibt das Erstellen eines Support Tickets im Rahmen Deiner Support-Subscription und ist somit nur dann für Dich interessant, wenn Du eine aktive Support-Subscription gebucht hast. Bevor Du Dein Support-Ticket...

weiterlesen
€ 100,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*