4358 Tipps rss | 519 Nutzer online

PHP-Fehlermeldung: "headers already sent"

Mit der Funktion header() kann man von PHP-Skripts aus nette Dinge anstellen, wie etwa den Typ des Dokuments festlegen

header("Content-type: xxx")

oder eine sofortige Umleitung zu einer anderen Seite auslösen

header("Location: xxx")

Statt der erhofften Wirkung erhält man manchmal aber auch nur die Fehlermeldung

Warning: Cannot add header information - headers already sent

Der Grund dafür ist, dass PHP nur solange Header-Informationen schicken kann, wie noch keine Seiteninhalte an den Browser gesendet wurden. Ein typischer Fehler ist ein übersehenes Leerzeichen außerhalb der PHP-Tags, wie in

  <?php

header("Content-type: ...")

 

Hier fällt das Leerzeichen vor der spitzen Klammer in Zeile 1 kaum auf, macht aber doch die Header-Ausgabe unmöglich.

Haben Sie aber penibel alle Ausgaben vor der Funktion header() eliminiert und die Fehlermeldung tritt trotzdem auf, kann der Grund auch sein, dass die Skript-Datei versehentlich im Unicode-Format abgespeichert wurde. Denn hierbei kommt vor dem ersten "echten" Zeichen die Bytefolge "FF FE", die PHP als Ausgabe interpretiert und deshalb die Warnung produziert.

Um sicherzugehen, dass ihr Programm nicht im Unicode-Format abgespeichert wurde, prüfen Sie in Ihrem Editor den Typ des Dokuments oder schalten in die Hex-Ansicht um. Dabei ist das Unicode-Format leicht an den beiden Startbytes und der Aufteilung jedes Zeichens auf zwei Bytes zu erkennen.

Ultraedit zeigt Unicode

Da zur Speicherung von Daten über den Cookie-Mechanismus genauso header()-Befehle verwendet werden, kann der PHP-Fehler auch beim Aufruf der Funktion setcookie() erscheinen.

Weiter:


Vielen Dank!
Dieser Artikel hier ist der beste und einzig schnell-findbare, der
wirklich hilft!
Unglaublich, dass ausgerechnet der Unicode-Header der Grund war.
Grüße aus Berlin!
[Rayo Rayo | 11.01.2008]


Hatte das gleiche Problem auch. Diese Info hat wirklich geholfen mein
Problem zu lösen.
Grüsse aus der Schweiz!
[JG JG | 02.04.2008]


WordPress in der 5-Minuten-Installation, alle Anpassungen vollzogen --
und nichts geht. Aber mit diesem Tipp funktionierte alles sehr
schnell. Vielen vielen Dank dafür! (Habe mir erlaubt, einen Link auf
diese Seite zu setzen, weil sie wirklich sehr hilfreich war:
http://www.klemmchen.de/wp/schlagwort/about/)
Viele Grüße aus Hamburg!
[Jörg Klemme | 09.01.2009]


Ich kenne dieses Problem noch aus der Zeit vor 7 Jahren, in der ich
regelmässig PHP Scripte geschrieben habe, konnte mich jedoch nicht
mehr an die Ursache erinnern.
Diese Seite ist vordergründig die einzige, die sich nicht auf auch für
den Scriptverfasser offensichtliche Lösungen beschränkt, sondern auch
eine Falle, Unicode, beim Namen Nennt.
Zusätzliche Angaben der Fehlermeldung wie cannot send bei der
Suchabfrage jedoch verweisen auf andere Seiten, die ebenfalls auf
diese Falle hinweisen.
Vielleicht erreicht die Seite mit diesen Begriffen ein besseres Google
Ranking?
[hansueli nichtenglish | 31.05.2009]


die fehlermeldung kann aufgrund der sprache auftreten. Beispielsweise
bei UTF-8 da diverse Developer leider noch nicht dieses universelle
Format entdeckt haben. In vielen Fällen genügt die deutsche Konversion
dann in UTF-8 ohne Bom um den Anschluss an ANSI-Skripte zu
überbrücken.
[gaton | 11.10.2009]


Ein Leerzeichen war's, ein elendiges Leerzeichen. DANKE!
[Marco | 12.10.2009]


"Ein typischer Fehler ist ein übersehenes Leerzeichen außerhalb der
PHP-Tags" das aht mcih heut 2 std beschäftigt mit scriptumschreiben
etc.dacht schon ich kann nix mehr :D
dank der seite hats auf mal geklappt.vielen dank :)
[sebastian | 28.10.2009]


HAttegrad ne ganze Stunde an so nem elendigen Leerzeichen was mich
wohl triezen wollte rumgehangen
[LordH | 05.12.2009]


Am Unicode ist es gelegen! Habe sehr lange im Netz nach einer Loesung
gesucht. Erste Seite nach langem die Abhilfe schafte! Klasse! Vielen
Dank
[Michael | 20.02.2010]


Boah.DANKE für diesen Artikel.
Ich wäre nie von allein drauf gekommen, dass es an Unicode hätte
liegen können.
Super Artikel
[thommy | 30.07.2010]



Ihr Kommentar:


Name: E-Mail:
Name und E-Mail in einem Cookie auf Ihrer Festplatte speichern

Veröffentlicht am: 07.09.2005
Aktualisiert am: 2010-07-31 07:25:37

Die Tipps von Tippscout.de sind sorgfältig recherchiert. Dennoch bitten wir um Verständnis, dass Tippscout.de keinerlei Haftung übernehmen kann für eventuelle Probleme oder Schäden, die aus der Umsetzung resultieren.

Copyright © Tippscout.de 1999-2010   | powered by Tippscout 5.0