Symfony 2.4: Warum werden 500 Fehler nicht von kernel.exception listener abgefangen?

8

Ich versuche, einen Listener zum Abhören von 403, 404 und 500 Ausnahmen zu erstellen. Dies funktioniert für 403 und 404 Ausnahmen, aber nicht für 500 Ausnahmen. Für 500 Ausnahmen (oder Ausnahmen, die als 500 Fehler für den Client zurückgegeben werden) wird die Methode onKernelException nie aufgerufen. Es scheint in meinem aktuellen Symfony-Projekt genauso zu sein und wenn der Code zu einer sauberen Installation von Symfony 2.4.1 hinzugefügt wird.

Ich führe dann einen 500 Fehler ein, indem ich eine nicht existierende Funktion ausführe.

In der Entwicklungsumgebung bekomme ich eine von Symfony generierte Seite mit der Aufschrift "Hoppla, sieht aus, als wäre etwas schief gelaufen". und dann werden Informationen über die ausgelöste "UndefinedFunctionException" zusammen mit dem 500-Statuscode angezeigt.

In der Produktionsumgebung bekomme ich eine leere Seite zusammen mit dem 500 Statuscode. Im Fehlerprotokoll prod.log bekomme ich einen "PHP Fatal error: Aufruf zu undefinierter Funktion" -Fehler mit einem Stack-Trace.

Da Symfony diesen Fehler offensichtlich auffängt, warum kann ich die entsprechende Ausnahme nicht mit einem kernel.exception Listener abfangen?

Die Klasse, die ich verwende, ist:

%Vor%

und die von mir verwendete Dienstkonfiguration lautet:

%Vor%     
Tirithen 15.01.2014, 13:46
quelle

2 Antworten

0

Stellen Sie zuerst sicher, dass Sie den Prod-Cache gelöscht haben.

Zweitens, sehen Sie, ob etwas auf dem Webserver Fehler für Sie abfängt, zB fastcgi_intercept_errors in Nginx, aber das wird wahrscheinlich nicht passieren.

Versuchen Sie drittens, eine Ausnahme auszulösen, anstatt eine nicht deklarierte Funktion aufzurufen.

Versuchen Sie viertens, $ event- & gt; setResponse so früh wie möglich im Exception-Listener zu verwenden, um sicherzustellen, dass es im Handler selbst keinen Fehler gibt.

Davon abgesehen habe ich keine Ahnung. Der Code scheint in Ordnung zu sein. Hast du mit XDebug versucht zu sehen, wie der Code fließt?

    
Nico Andrade 22.06.2016 20:02
quelle
0

In PHP 7 wurden Ausnahmen für schwerwiegende Fehler eingeführt. Wenn Sie in PHP 5.X sind, stoppt die Anwendung.

    
quelle