PHP Fehlermeldung: Cannot modify header information - Ursache?
KeinBlase
- php
0 suit0 GoogleDochMal0 Felix Riesterer0 dedlfix
Hallo
Ich bekomme auf meiner Webseite (CMS mit PHP & MYSQL, läuft auf Apache Server) immer folgende Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at........
Ich bekomme diese Fehlermeldung mehrfach bei einer Seite, aktualisiere ich den Browser ist sie weg, ebenso wenn ich auf eine schon geöffnete Seite zurück kehre.
Was ist die Ursache für diesen Fehler?
Dank und Gruss
Warning: Cannot modify header information - headers already sent by (output started at........
Ich bekomme diese Fehlermeldung mehrfach bei einer Seite, aktualisiere ich den Browser ist sie weg, ebenso wenn ich auf eine schon geöffnete Seite zurück kehre.
es wird eine http-header-information gesetzt, obwohl schon output gesendet wurde - das darf nicht sein
vermutlich setzt du irgendwo ein cookie, welches beim neu laden der seite dann nicht mehr gesetzt wird oder ähnliches
http://www.php-resource.de/forum/showthread.php?threadid=62965
Gruss
Liebe(r) KeinBlase,
Dein Webspace startet automatisch eine Session und vergibt deshalb ein Cookie. In irgendeinem Deiner Scripte wird jetzt etwas _sofort_ an den Browser ausgegeben, sodass dieser Mechanismus anscheinend nicht korrekt arbeiten kann...
Ob das Obige jetzt so unbedingt einen Sinn ergibt, mag dahingestellt bleiben, jedoch erscheint mir das Phänomen, dass nach dem Reload einer Seite die Fehlermeldung wieder verschwindet, ganz stark auf session.autostart=true hinzuweisen. Um das zu unterbinden gibt es zwei Möglichkeiten:
1.) Wenn Du ein zentrales Script benutzt, dann füge am Anfang folgende Anweisung ein:
ini_set('session.autostart', false);
2.) Wenn es die Serverkonfiguration zulässt, dann kannst Du über Deine .htaccess diesen Wert steuern. Dazu muss in dieser Textdatei folgende Zeile stehen:
php_flag session.autostart false
Liebe Grüße,
Felix Riesterer.
echo $begrüßung;
Dein Webspace startet automatisch eine Session und vergibt deshalb ein Cookie. In irgendeinem Deiner Scripte wird jetzt etwas _sofort_ an den Browser ausgegeben, sodass dieser Mechanismus anscheinend nicht korrekt arbeiten kann...
Unwahrscheinlich, dass es sich um einen Session-Start handelt. Die Meldung passt nicht zum Verhalten beim Session-Start, oder der OP hat weitere Meldungen unterschlagen.
Ob das Obige jetzt so unbedingt einen Sinn ergibt, mag dahingestellt bleiben, jedoch erscheint mir das Phänomen, dass nach dem Reload einer Seite die Fehlermeldung wieder verschwindet, ganz stark auf session.autostart=true hinzuweisen.
Nein, ganz und gar nicht. Bei aktiviertem session.auto_start startet PHP den Session-Mechanismus selbständig vor dem Scriptstart. Da kann noch keine Ausgabe stattgefunden haben[1]. Anders kann das beim manuellen Start mittels session_start() sein, denn das kann auch aufgerufen werden, wenn bereits eine Ausgabe erzeugt wurde. In dem Fall gibt es aber diese Meldung und vorher mindestens noch noch »Cannot send session cookie - headers already sent ...«
setcookie(), aufgerufen in Abhängigkeit von einem empfangenen Cookie, ist wenig wahrscheinlich, denn beim ersten Aufruf konnte der Keks ja nicht ausgeliefert werden, kann also eim wiederholten Request nicht mit dabei sein. Es sei denn, ein zweites setcookie() hat den selben Keks bereits und vor der ersten Ausgabe gesendet.
[1] Höchstens mit auto_prepend_file. Ob das aber vor session.auto_start oder danach ausgeführt wird, weiß ich nicht. Sinnvoll wäre es danach.
echo "$verabschiedung $name";