PHP-Fehler - Cannot modify header information - headers already sent

Cannot modify header information - headers already sent” ist einer der bekanntesten PHP Fehlermeldungen und sicher schon einigen Programmieren auf dem Bildschirm erschienen ist. Der PHP Fehler kommt durch Veränderungen bzw. Modifizierung des Header´s.

Hier muss man aber drauf achten, dass vor dem Senden des Header´s keine Ausgabe stattfindet (Leerzeichen oder ähnliches). Sollte sich doch ein Leerzeichen oder eine andere Ausgabe eingeschlichen haben, kommt es zu folgender Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at test.php:1) in tester.php on Line 999

Mögliche Header-Befehle:

  • header(); -> Weiterleitungen, Cache u.s.w.
  • session_start(); -> Session starten
  • setcookie(); -> Cookies setzen

Hier mal ein paar Beispiele für den falschen Einsatz des PHP-Header´s:

1. Leerzeichen

_<?php header(”location:http://www.testdomain.de”); ?>

2. Ausgabe vor Header

<?php
echo “test”;
header(”location:
http://www.testdomain.de”);
?>

Um die Fehlermeldung “Cannot modify header information - headers already sent” zu vermeiden, muss man also drauf achten, vorher absolut keine Ausgabe zu erzeugen.

Es gibt aber einen kleinen Trick, um zum Beispiel eine PHP-Header-Weiterleitung auch nach einer Ausgabe aufzurufen. Dies geht mit den PHP-Funktion ob_start und ob_end_flush. Durch die Funktionen wird der Ausgabepuffer aktiviert und die Ausgabe in einen internen Puffer zwischengespeichert. Nur Headerinformationen werden sofort ausgeführt. Folgend mal ein einfaches Beispiel:

<?php
ob_start(); //Startet Ausgabepuffer
echo “TextlalaText”;

if($bala==1) {
header(”location:http://www.testdomain.de”);
}
ob_end_flush(); //Beendet Ausgabepuffer und Ausgabe des Inhaltes

?>

Zusammenfassung:

Wer den PHP-Fehler “Cannot modify header information” gerne vermeiden möchte, sollte keine Leerzeichen, Texte oder anderen HTML-Code vor dem Header setzen. Umgehen kann man den Fehler wie schon erwähnt mit dem Ausgabepuffer ob_start() und ob_end_flush(). Kleiner Tipp schon Schluss, auch PHP-Fehlermeldungen sind Ausgaben und können zu dem Fehler führen.

Bookmarken bei Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Digg
  • del.icio.us
  • Webnews
  • MisterWong
  • Y!GG
  • Google Bookmarks
  • SEOigg
  • Technorati
  • Alltagz
  • Linkarena

Informationen zum Blogartikel "PHP-Fehler - Cannot modify header information - headers already sent"

Most Commented Posts

6 Antworten zu “PHP-Fehler - Cannot modify header information - headers already sent”

  1. Immer Ich sagt:

    Genial, hat mir sehr geholfen. Danke!

  2. Tom sagt:

    Hallo,
    Danke für die Anleitung.

    leider klappt das bei mir nicht, weil ich in einer weiteren Unterroutine nochmals mit ob_start arbeite.

  3. KuhRo sagt:

    Kopf ändern nicht erlaubt…

    So die nette Übersetzung eines Fehlers, den ich eben in einem PHP Skript suchen musste. Ich wusste ja nicht wie pinkelig PHP an einigen Stelle ist - ja es ist nachvollziehbar, wenn man sich mit dem Fehler auseinandersetzt, aber er……

  4. echo-Anzeigen dann header('Location') ob_start() Problem - PHP @ tutorials.de: Forum, Tutorial, Anleitung, Schulung & Hilfe sagt:

    [...] auch einen Fortschritt angeben - dazu habe ich mal das Beispiel (ziemlich weit unten) von dieser Seite genommen und daraus folgendes Testscript [...]

  5. neuling sagt:

    Warning: Cannot modify header information - headers already sent by (output started at /home/www/web964/html/poliwash-portal/index.php:1) in /home/www/web964/html/poliwash-portal/global.php on line 21

    Habe die Datei Global.php nachgeschaut, klein Leerzeichen. ich habe selbst nichts verändert sondern nur eine webseite freigegeben und dann kam dieses problem. kann mich auch nicht mehr einloggen dann erscheinen weitere Probleme
    habe keine Ahnung von php habe auch schon hier gelesen leider habe ich keinen passenden Fehler gefunden. Wer kann bitte so nett sein und einen Laien sagen wo der fehler liegt. Ich bedanke mich vorab rechtherzlich

  6. hejla sagt:

    Also ich habe alles ausprobiert. sogar neue datei gemacht. habe keinerlei leerzeichen oder noch wat.
    die loesung war:
    ich habe die textdatei als:
    UTF-8
    gespeichert.
    und nicht als ANSI

    als ich es als ANSI gespeichert habe, war das problem geloest.

    SCHADE dass ich das nirgendwo gefunden hab.

    ADMIN fuege das bitte auch hinzu!

Hinterlasse eine Antwort




Copyright flexib webcoding - Webdesign, Programmierung und SEO in Halle - Saalekreis - Leipzig
flexib webcoding is powered by WordPress | Beiträge (RSS) | Kommentare (RSS) | Impressum | AGB | Webdesign Blog Tags