Cannot modify header information – headers already sent by

Mit der Funktion header kann man in PHP den HTTP-Header eines Dokuments ändern. Das ist besonders sinnvoll, wenn man dem Browser Bilder ausliefern möchte und daher vermeiden will, dass der Browser das Bild als HTML-Seite interpretiert.

Beim Umgang mit header muss man darauf achten, dass vor dem Einsatz dieser Funktion keine HTML-Tags oder andere formatierte Ausgaben stattfinden. Außerdem dürfen sich vor (und nach!) der PHP-Einbindung keine Leerzeichen befinden.

Ein einfaches header-Beispiel ist:

<?php header("Content-type: image/jpeg") ?>

Selbst bei diesem Einzeiler kann es aber vorkommen, dass eine Warnung mit dem Text „Cannot modify header information – headers already sent by“ ausgegeben wird. In diesem Fall ist die PHP-Datei in UTF-8-Codierung abgepeichert und enthält ein „Byte Order Mark“ (kurz: BOM). Das BOM-Steuerzeichen wird von PHP falsch erkannt, weshalb man für diese Datei „UTF-8 ohne BOM“ als Kodierung wählen muss.

Wie das geht, zeigt dieser Screenshot von Notepad++: