Er ist ein häufiger Fehler. Typischer Fehler. Jeder PHPler, behaupte ich, kennt ihn. Gerade deswegen möchte ich ihn einfach einmal hier erwähnt haben:

Warning: Cannot modify header information - headers already sent by ...

Werbung

Werbeblocker aktiv?

Vermutlich aufgrund eines Werbeblockers kann an dieser Stelle leider keine Werbung angezeigt werden. Als Blog ist diese Website jedoch darauf angewiesen, um diverse Kosten abdecken zu können. Vielleicht möchtest du Servaholics ja in deinem Werbeblocker als Ausnahme hinzufügen und so unterstützen? 🙂

Sofern der Header z.B. über session_start() verändert werden soll, könnte der Header auch wie folgt lauten:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by ...

Die Fehlermeldungen sind in ihrer Aussage recht eindeutig: Ein oder mehrere Header wurden bereits abgeschickt, deswegen kann dieser nicht mehr, bspw. durch eine Weiterleitung (header("Location: ...")), verändert werden. Die zwei häufigsten Fehler sind folgende:

  1. Ein Leerzeichen bzw. Absatz vor dem ersten <?php im Script bzw. nach dem letzten ?>: Dieses Zeichen gilt bereits als Ausgabe, deswegen werden auch alle Header ausgegeben. Eine Bearbeitung ist deshalb nicht mehr möglich.
  2. Genau so dürfen auch keine beabsichtigten Ausgaben vor einer Bearbeitung des Headers stattfinden. Diese Ausgabe darf weder per echo/print noch per ?>Text<?php passieren.

Speziell für die Nutzer des Editors Notepad++ ein Tipp: Wenn dieser Fehler direkt in Zeile 1 erscheint, solltet ihr prüfen, ob die Datei im Zeichensatz UTF-8 (Codierung) gespeichert wird. Scheinbar ist der Fehler mit der Umstellung auf ANSI behoben 😉 noch besser mit einer Umstellung auf UTF-8 ohne BOM behoben, danke an @AsgarSerran 🙂

Andere Beiträge, die auf diesen Beitrag verlinken

Deine Meinung zu diesem Artikel?


5 Kommentare zu "PHP-Fehler: Headers already sent by" (RSS)

Sowas kann man am besten verhindern indem man PHP und HTML trennt 😉
PHP und HTML sollten sowieso bei jedem zukunftsfähigem Projekt getrennt werden.
Der Fehler kann jedoch trotzdem jederzeit auftauchen.

Hier wird darauf verwiesen, einfach auf ANSI umzustellen...
Ich verweise auf einen anderen Eintrag, in dem UTF-8 wieder empfohlen wird:
http://www.servaholics.de/2011/01/website-auf-utf-8-kodierung-umstellen/

Ich würde auch hier empfehlen, bei UTF-8 zu bleiben. Jedoch gibt es da Unterschiede..
UTF-8 ohne BOM sollte hier gewählt werden. Die Byte-Order-Mark sieht man im Notepad++ nicht. Jedoch sind dann am Anfang eines jeden Dokumentes bereits Zeichen vorhanden, die bei einer website mit ausgegeben werden und somit eine Headerausgabe verursachen.

Anstatt also bei Notepad++ auf ANSI zu wechseln, UTF-8 einfach auf UTF-8 ohne BOM umstellen.
Danke, diese Info fehlte mir damals 😉 UTF-8 ohne BOM 🙂
Vielleicht auch einmal im Artikel selbst ergänzen, so findet man diese Info nicht nur in den Kommentaren 😛
Hatte das Problem aber auch einmal, als ich mit UTF-8 Umstellung anfing.
Erledigt 😉