PHP Fehlermeldungen








Warning: Cannot modify header information - headers already sent by

 Startseite > PHP Fehler > Warning: Cannot modify header information - headers already sent by

Diese Meldung erscheint auch oft bei alten PHP Scripten die unter neuen PHP Versionen mit anderen Einstellung verwendet werden sollen.


Die Fehlermeldung
Warning: Cannot modify header information - headers already sent by (output started at E:php-fehlertest_code.php:5) in E:php-fehlertest_code.php on line 7

Die Warnung sagt, das php eine Headeranweisung via der Funktion header() nicht senden konnte, da bereits in der Zeile 5 eine Ausgabe erfolgte.

Der Code
Code:
  1.  
  2.  
  3. $string = 'Hallo';
  4.  
  5. echo $string;
  6.  
  7. header("Location: http://localhost/test_code.php");



Ursache: Ausgabe per echo vor der Funktion header


Weitere Beispiele
Code:
  1.  
  2.  
  3. <?php
  4. //Fehler, Leerzeichen von <?php
  5. $string = 'Hallo';
  6.  
  7.  
  8. header("Location: test_code.php");
  9.  
  10. ?>
  11.  


Hier ist vor dem <?php Start-Tag ein Leerzeichen, wenn der Start-Tag ganz nach oben verschoben wird, sollte der Fehler nicht mehr auftreten.


Code:
  1. <?php
  2. $wert = 5,
  3. ?>
  4. <div>Fehler</div>
  5. <?php
  6. $string = 'Hallo';
  7.  
  8.  
  9. header("Location: test_code.php");
  10.  
  11. ?>
  12.  


Hier wurde PHP kurz unterbrochen um HTML auszugeben, dadurch kann man die Header() Funktion hier nicht mehr nutzen.


Zur Problemlösung:
Es sollte bei der Verwendung der header() Funktion darauf geachtet werden das vor dem Aufruf dieser Funktion noch keine Daten vom Server zum Browser gesendet wurden.

Manchmal sind es schon kleine Flüchtigkeitsfehler die diese Fehlermeldung verursachen. Zum Beispiel ein Leerzeichen oder Zeilenumbruch vor dem <?php Start-Tag fühen bereits dazu, daß Daten an den Browser gesendet werden.

Bei einigen Webauftritten ist es aber auch der Aufbau bzw. die Struktur der Seite, die die Verwendung von der header() Funktion unmöglich macht. Manche Webauftritte haben ihre Dateien so verschachtelt mit include() das vor den eigentlichen PHP Code jedesmal schon HMTL gesendet wird.



 Kommentare

15.11.2007: fips

nicht böse gemeint,aber witzig ist das schon.hier werden genug beispiele gezeigt wie es falsch ist,aber leider bietet ihr keinen einzigen lösungsansatz.das ist echt schade.den fehler sind schneller gemacht als beseitigt und die meisten suchen nach lösungen.also falscher ansatz leute. ADMIN: Die Ursache die im Beitrag genannt wurde, sollte eigentlich selbsterklärend sein. Und den Leser damit verständlich machen was er ändern muss.

20.11.2007: ashyda

An sich fand ich das schon ein bisschen hilfreich, weil ich eben jenen Fehlercode habe und verstanden hab, was er für ein Problem hat. Allerdings wären ein paar mehr Beispiele ganz hilfreich gewesen, damit man sich den richtigen Lösungsweg über vlt mehrere Abschnitte selbst zusammen basteln kann. Denn mein header befindet sich in Zeile 280 und eine Ausgabe sei bereits in Zeile 2 erfolgt. Da steht aber nur <?php und sonst nichts. Außerdem hat es vorher immer funktioniert, ich wüsste nicht, wo da auf einmal der Fehler herkommen sollte.

04.12.2007: ADMIN

Der Fehler in Zeile 2 wird sein, das vor dem <?php ein Leerzeichen oder Zeilenumbruch ist. Manche Editors fügen automatisch beim Speichern Leerzeichen ein. Oft wenn man Funktionen wie Suchen/Ersetzen in mehreren Dateien verwendet. Es gibt halt mehrere Möglichkeiten.

27.12.2007: tobsi

vielen dank füt den beitrag!!! ich habe den fehler behoben und es läuft !!! -DAN_KE !!!

25.02.2008: Axel Albitz

zwei Zeilenumbrüche am Ende eine include-Datei (?>nn haben den gleichen Effekt - eine unsichtbaren output und die o.g. Fehlermeldung.

13.03.2008: Marcel Schweiz

Vielen lieben Dank für den Tip. Es war tatsächlich auch mein Problem. Ich hatte diese Fehlermedlung in OSTICKET. Beim Script admin.php waren nach dem ?> noch ein paar Leerzeilen welche diese Fehlermeldung produziert. bye

14.03.2008: Dark

Vielen Dank, Problem erfolgreich gelöst .

08.04.2008: Omicron

Auch von mir ein herzliches Dankeschön. Manchmal ist man wirklich betriebsblind und übersieht sogar ein Leerzeichen! Mann Mann Mann ...........

23.04.2008: Hoto

Sollte Jemand die Fehlermeldung in der aufzurufenden PHP Datei direkt in Zeile 1 bekommen: das passiert, wenn man die PHP Datei als UTF-8 speichern will. So ist es jedenfalls bei mir eben gewesen, statt UTF-8 in ANSI gespeichert und weg war der Fehler (nutze Notepad++).

10.05.2008: wowo

Erst mal schoenen Dank für die Lösung. Ich beherrsche einige Programmiersprachen. Aber dies ist eines der dämlichsten Probleme, die es gibt und nicht geben dürfte. warum wird so was überhaupt ind Form von GD implentiert. Na ja... Kann man isch wohl nur mit abfinden.

27.07.2008: akita

Vielen Dank für die Info! Lange Zeit funktionierte das PHP-Script (eine Umleitung) im Header, plötzlich kam der Fehler. Als ich es aus dem Header ganz an den Anfang stellte, lief alles wieder. @fips: MIR hat die Seite geholfen. Ein wenig Denkarbeit sollte bei der Lösungssuche schon noch übrig bleiben. ;-)

29.09.2008: PHPler

Hi, ich schließe mich da ashyda mal an. Das liegt einfach daran das die Leute die diese dinge hier eintragen es so formulieren wie sie es können aber nicht so das es anderen hilft. Ich kenne mich in sachen PHP gut aus, aber man kann nicht alles wissen und ich werde aus dieser angeblich (selbsterklärenden) lößung/hilfe nicht schlau drauß und konnte den Fehler nicht beheben. greez

21.10.2008: Verena

Erstmal danke für das Howto, hat mir sehr geholfen. Besonders der Kommentar von Hoto, denn das war es bei mir. Konnte nach stundelanger verzweifelter Suche kein falsch platziertes Leerzeichen finden, aber ich hatte die Datei zuvor mit Notepad++ in UTF-8 konvertiert - und das wars. Herzlichen Dank für diese Seite!

06.01.2009: othmar

Vielen Dank für diese exzellente Seite. Hat mir dabei geholfen mein Problem (Darstellen von Grafiken die in mySQL Blob's gespeichert sind) zu lösen. Mein Fehler war die PHP Datei, die über das IMG HTML Element geladen wird, und die die Grafik von der Datenbank lädt, mit Dreamweaver zu erstellen. Dabei generiert Dreamweaver standardmässig einen Header (dem ich nicht viel Bedeutung zumass) aber der eben auch einen Header enthält. Nach dem Löschen des Headers war das Problem gelöst.

09.01.2009: Roman

Einfache Lösung: PHP Datei in “UTF-8 ohne BOM” konvertieren!!! Am besten mit Notepad++. Format–> Konvertieren…

18.02.2009: Tarnfisch

VIELEN DANK HOTO !!!! Einfach in ANSI speichern und der Fehler ist weg !! Wahnsinn Vielen Dank !

19.02.2009: Micha

Othmar, wie hast du das header aus dreamweaver rausgewurfen? Bei mir funktioniert alles wenn ich den Code in Zeile 1 einfüge. Wenn ich aber ein body davor einfüge, wie einen Text, und dann die Grafil anzeigen will, kommt der Fehler. Hier mal der Code in verkürzter Form text <?php //Daten aus der MySQL-Tabelle auslesen $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword); mysql_select_db($Database, $DatabasePointer); $ResultPointer = mysql_query


 Kommentar schreiben

 Ihr Name:
 
 Ihre Emailadresse (wird nicht angzeigt)
 
 Ihr Kommentar (maximal 500 Zeichen)
 

 Wenn Ihnen dieses Bild nicht angezeigt wird, ist wahrscheinlich die Bildanzeige im Browser deaktiviert.
   Sicherheitscode eingeben

 


andere Themen:
22.02.2005 Warning: Invalid argument supplied for foreach()
22.02.2005 Parse error: parse error, unexpected '='
22.02.2005 Notice: Undefined index
22.02.2005 Warning: session_start(): Cannot send session cookie - headers already sent by


Zurück


<?php echo 'Programmieren - Programme - Scripte - Informationen - PHP: Hypertext Preprocessor - Webprogrammierung'; ?>


© PHP-Fehlermeldungen
Beinspreizer