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++:

Ein Gedanke zu „Cannot modify header information – headers already sent by“

  1. Sehr häufig dürfte es auch einfach nur ne „Warning“ sein, weil mal wieder auf nem Produktivsystem jegliche Fehlermeldungen an den Browser ausgegeben werden…

    Ansonsten ist auch die Nutzung des Ausgabepuffers (ob_start etc. pp) nicht ungeschickt, insbesondere wenn man aufwendigere Header in einem umfangreicheren Skript ausgiebt. Da passierts leicht, das eine kleine Ausgabe in irgendeiner Funktion die Änderung des Headers verhindert…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.