2016-08-09 35 views
1

Nach dem CakePHP 3.3.0-RC1 aktualisieren, in meinen Logs ich so etwas wie dieses:CakePHP 3.3.0-RC1: Header gesendet bereits

2016-08-09 14:20:45 Warning: Headers already sent in /home/mirko/Server/mirkopagliai/vendor/cakephp/cakephp/src/Routing/Filter/AssetFilter.php:149 

Wie kann ich herausfinden, wo die Header erneut gesendet werden ?

+0

finden Sie einige Code hinzufügen, die Sie in die angeforderte Aktionsmethode geschrieben –

+0

@HareshVidja, weiß ich nicht, was das ist Aktion, es ist genau das, was ich frage ... –

Antwort

2

Wie finde ich heraus, wo die Header erneut gesendet werden?

Zum Beispiel durch eine geeignete Debugging-Umgebung verwendet wird, in dem Sie den Steuerungsablauf einen Haltepunkt für den Log::warning() Anruf in Response::sendHeaders() und überprüfen einstellen.

Alternativ können Sie (vorübergehend) den Kern hacken und dem Protokoll einen Stacktrace hinzufügen, mit dem Sie überprüfen können, was passiert. In vendor/cakephp/cakephp/src/Netork/Response.php ändern Sie den Log::warning() Aufruf in der sendHeaders() Methode um so etwas wie

$trace = \Cake\Error\Debugger::trace(); 
Log::warning("Headers already sent in {$file}:{$line}\nStack Trace:\n{$trace}\n"); 

https://github.com/cakephp/cakephp/blob/3.3.0-RC1/src/Network/Response.php#L453

+0

Dank @ndm, du bist immer sehr hilfreich und klar. Denkst du, dass es nützlich wäre, deinen Hacking definitiv vorzuschlagen? Diese Warnung ist auf diese Weise nutzlos. –

+0

Nicht sicher, es gibt sicherlich sowohl Vorteile als auch Nachteile ... aber Sie können immer ein Ticket bei GitHub öffnen und sehen, was andere darüber denken. @ MirkoPagliai – ndm