CodeIgniter "content-encoding-Fehler"
Hat jeder Körper hat eine Idee, wie man herausfinden, wo das Leck ist, der provoziert diese "Content-Encoding-Fehler" mit $config['compress_output'] = true
in CodeIgniter?
Habe ich versucht zu Debuggen dieser Fehler für die Tage, aber ich kann nicht scheinen, um herauszufinden, wo das Leck ist. LogLevel
ist bei debug
aber ich sehe keine info im log, wenn dieser Fehler passiert.
Also, irgendwelche Ideen, wie Debuggen?
UPDATE
Ich wirklich nicht wollen, deaktivieren Sie die compress_output
feature, ich will nur sehen, wie kann ich verfolgen, wo der Fehler produziert wird
UPDATE2
Ist, habe ich mich immer und immer wieder zu sehen, wenn es gibt keine Ausgabe in die Controller... und da ist keiner, also einige wo sonst muss der Fehler provoziert werden. Keine Modelle/Datenbank-Controller, libraries, helpers und views
- Lesen Sie hier: stackoverflow.com/questions/2438517/...
- überprüfen Sie meine Frage aktualisieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses Problem ist, wo die Ausgabe-Pufferung beginnt. Die Prüfung für die config-variable ist in
system/core/Output.php
im_display()
. Es beginnt die Gzip-Pufferung nach viel code bereits ausgeführt wurde. Dies lässt das Potenzial für die Ausgabe zu haben, die aufgetreten sind, bevor es die Pufferung beginnt.Mit
compress_output
eingestelltfalse
es spielt keine Rolle, weil nichts codiert ist. Mit dem Werttrue
Sie am Ende mit gemischten Inhalten. Eine Ausgabe ist verschlüsselt und manche nicht, die Ursachen der Kompression Fehler.Gibt es zwei Lösungen:
1) Sie verlassen konnte
compress_output
auf false festgelegt, und fügen Sieob_start('ob_gzhandler');
an die Spitze der index.php Datei. Dadurch wird sichergestellt, dass alle Ausgaben immer gzipped, einschließlich Fehlern.2) Die andere Lösung ist das hinzufügen
ob_flush();
vorob_start('ob_gzhandler');
imsystem/Output.php
. Dies wird die gzip-Ausgabe, wenn keine Fehler vorhanden sind und Sie dienen nicht-codierte Inhalte, wenn Fehler vorhanden sind.Ich denke, 2 ist die bessere Lösung und sollte durchgeführt werden, indem die CodeIgniter-team. Aber wenn Sie nicht wollen, um den dreck mit dem system-code (die änderungen werden sofort wechseln, wenn Sie ein upgrade), dann 1 ist die bessere Lösung für Sie.
Dies könnte eine lange gedreht, aber wenn Sie die echo/print-Datenbank-Ausgabe direkt aus dem controller, anstatt es auf das Modell, das Sie wahrscheinlich Fehlermeldungen erhalten, die zu tun haben mit output buffering. Sind Sie echo aus Ihren controller?
Setzen Sie die folgende Zeile in config.php:
Löst. Das problem in meinem Fall war, dass ich an der post, aber es nicht erkennen, die
FILLCATEGORIAS
Funktion. Inly durch ändern der$ config [ 'compress_output'] = FALSE;
gelöst.Ist DIESES problem aufgetreten, wenn wir das senden von Daten über eine POST-Anfrage:
JS:
Alle Fehler in PHP break-Komprimierung.
Um dies zu testen, in index.php ändern:
zu
Nicht echo/print-anzeigen Ausgang vom controller.
Nicht verwenden "?>" am Ende der controller-Datei.
Ich hoffe, es hilft.
Update:
Zu prüfen, ob die Ausgabe leer ist, bevor Sie die Pufferung, die Sie öffnen können core/Output.php und fügen Sie
bevor
Wenn es auch nur ein Leerzeichen oder eine leere Zeile, die Komprimierung schlägt fehl. (check Quelltext der Seite aus dem browser). Dies geschieht, weil mit $config['compress_output'] = true , ob_start('ob_gzhandler') (Zeile 379 Output.php) ausgeführt wird, welches bewirkt, dass ein "Cannot modify header information - Headers already sent ..." Warnung. Diese Warnung ist die Ursache der Kompression scheitern.
Also grundsätzlich jedes echo außerhalb der Leistungsklasse (json-Ausgabe enthalten) senden-Header zum client, die dazu führen, "Cannot modify header information - Headers already sent ..." Warnung, die bewirkt, dass die "content-encoding-Fehler".
Ich hatte das gleiche problem. Nach der Suche, fand ich, dass mein controller hat
?>
am Ende der Datei. So habe ich es entfernt und es funktioniert perfekt. Hier ist ein link für mehr detail.