Uncaught Enlight_Controller_Exception als HTTP-Code 200

Hallo,

das Problem ist ziemlich merkwürdig, ich hoffe der Titel trifft es soweit.

Folgendes Problem: der Shop auf 5.5.6 wirft bei Aufruf einer fiktiven URL (zB https://www.shopdomain.de/test) eine Fehler-Seite: 

Fatal error : Uncaught Enlight_Controller_Exception: Controller „test“ not found for request url https://www.shopdomain.de/test in /var/www/vhosts/[shophost]/httpdocs/engine/Library/Enlight/Controller/Dispatcher/Default.php:507 Stack trace: #0 /var/www/vhosts/[shophost]/httpdocs/engine/Library/Enlight/Controller/Front.php(222): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #1 /var/www/vhosts/[shophost]/httpdocs/engine/Shopware/Kernel.php(202): Enlight_Controller_Front->dispatch() #2 /var/www/vhosts/[shophost]/httpdocs/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(102): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #3 /var/www/vhosts/[shophost]/httpdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(448): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(Obje in /var/www/vhosts/[shophost]/httpdocs/engine/Library/Enlight/Controller/Dispatcher/Default.php on line  507

Diese wird per HTTP 200 ausgegeben, daher greift wohl auch die in Shopware eingestellt SEO-Einstellung bei einer 404 eine Einkaufswelt anzuzeigen nicht. In der config.php stehen keine dev-Werte, in der htaccess ebenso nicht. Die EInkaufswelt lässt sich per shopdomain.de/seite-nicht-angegeben aufrufen.

Auf der Staging hingegen funktioniert alles. Da wird ein fiktiver Link auch mit einem HTTP-Code 404 ausgegeben und die entsprechende Einkaufswelt angezeigt. Die SEO-/Router-Einstellungen zur Live-Umgebung entsprechen der Staging-Umgebung. Die htaccess der Staging gleicht der Live, besitzt zusätzlich aber noch einen htpasswd-Abschnitt.

Habt ihr noch Ideen was ich ausprobieren könnte? Danke im Voraus.

Kann keiner helfen?

Ich kürze nochmal: bei einem Aufruf einer fiktiven URL wird ein Fehlermeldung ausgespielt, die jedoch nicht von Shopware abgefangen werden kann, da sie als HTTP-Code 200 ausgegeben wird. Auf der Staging funktioniert alles tadellos, es wurde erst vor drei Monaten die Live mit der Staging geupdatet. 

Die Shopware-Einstellungen im Router sind mit der Staging identisch, die htaccess-Datei ist auch bis auf die htpasswd-Stelle identisch.

Die Server-Logs geben keine Rückschlüsse auf das Verhalten. Habt ihr noch weitere Ideen, dem Prblem auf den Grund zu gehen? (andere Shops haben dasselbe Problem, es scheint als nicht selten zu sein)

Du hast in der config.php das erweiterte Debugging aktiviert, damit hebelst du die 404 Funktion aus und der Fehler „Controller Not found“ wird ausgegeben. Das ist erstmal normal. Am besten das Zeug mal aus der config.php rausnehmen.

@Moritz Naczenski schrieb:

Du hast in der config.php das erweiterte Debugging aktiviert, damit hebelst du die 404 Funktion aus und der Fehler „Controller Not found“ wird ausgegeben. Das ist erstmal normal. Am besten das Zeug mal aus der config.php rausnehmen.

Danke Moritz. Jedoch sind in der config.php keinerlei Debugging-Parameter gesetzt (siehe EP). Hast du noch weitere Anspielstationen?

Zeig mal deine config.php. Das kann eigentlich nichts anderes sein. 

    array (
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'dbusername',
    'password' => 'dbpassword',
    'dbname' => 'dbname',
    )
);

 

Dann kopiere mal die engine/Shopware/config/default.php aus dem Installationspaket deiner Version auf den Server. Vielleicht hat jemand die defaults verstellt.

https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Configs/Default.php

 

Und schau mal in der s_core_plugins ob der Errorhandler aktiv und installiert ist: 

 

Hallo Moritz, diese Werte in der default.php

'front' => [
      'noErrorHandler' => false,
        'throwExceptions' => false,
        'disableOutputBuffering' => false,
        'showException' => false,
        'charset' => 'utf-8',
    ],

waren alle auf true gesetzt. Ich habe sie auf false gesetzt, aber es hat das Problem nicht gelöst. 

Die Sache in der Datenbank werde ich noch prüfen. Danke dir schonmal!

Nicht einfach was ändern an der default.php, nimm die Standartwerte aus dem installationspaket

Das war mir zu unsicher, daher hatte ich die Dateien Zeile für Zeile abgeglichen. Aber nur diese Werte waren geändert.

Aber das scheint des Rätsels Lösung zu sein, die Seite zeigt die Error-Seite an.

Den Errorhandler hatte ich davor nicht mehr überprüft, aber es funktioniert ja nun.

 

Vielen Dank dir!

Thread kann geschlossen werden.