2010-12-09 5 views
0

Ich habe eine PHP-Anwendung mit output_buffering = On erstellt.PHP output_buffering on/off issue

Nun, wenn ich output_buffering = Off tun dann habe ich

folgende Fehlermeldung erhalten
"Cannot modify header information - headers already sent by ". 

Wie kann ich diesen Fehler beheben?

Was kann der Nachteil sein, wenn ich Anwendung auf Live-Site mit output_buffering = Off hochladen?

+0

http://stackoverflow.com/questions/ask-advice – Gordon

Antwort

0

From PHP Tag Wiki:

Q. "Header bereits gesendet worden ..."
A. Sie Inhalte sind zur Ausgabe und zum Auslösen der PHP-Standard-Content-type: text/html-Header, bevor Sie Ihren eigenen Anruf zu Header(). Es gibt ein paar Möglichkeiten, wie dies passieren kann: Überprüfen Sie, ob ein Echo oder ein Ausdruck von Streusignalen vorhanden ist, ob Leerzeichen vor und nach den Tags vorhanden sind oder ob es sich um eine Unicode-Stückliste handelt. Erwägen Sie, die Ausgabepufferung zu verwenden. Bei vielen Skripts muss die Endung nicht eingefügt werden.> Und das Problem kann leicht behoben werden, indem Sie das Ende-Tag aus Ihren Dateien entfernen.

There is also a myriad of duplicates for this.

0

Senden Sie Ihre Kopfzeilen vor jedem Ausgang geht an den Browser.

header('Foo: bar'); 
echo "foo"; 
0

Wenn Sie die Ausgabe-Pufferung ausschalten, werden Sie keine zusätzlichen Header senden darf (einschließlich Cookies zB), nachdem Sie beliebige Daten an den Client gesendet haben (nämlich mit echo oder eine andere Ausgangsfunktion).

Sie können headers_sent() verwenden, um zu überprüfen, wo Sie begonnen haben, Daten an den Client auszugeben.

0

Stellen Sie sicher, dass alle Header-Tags ('') oben rechts im Skript mit keine Leerstelle sind!

Beispiel:

<?php 
header('type of header'); 
?> 

Wenn Sie zu tun haben, es wirklich weiter unten auf der Seite, die Sie aufrufen ob_start können() am Anfang des Skripts. Rufen Sie ob_end_flush() auch am Ende des Skripts auf.