YourWBB


yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB Lite 1.0.x » [WBB Lite 1.0.x] Allg. Fragen und Probleme » Private Nachrichten können nicht beantwortet werden » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 1.351 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Dieses Thema wurde als erledigt markiert. Thread erledigt

Zum Ende der Seite springen Private Nachrichten können nicht beantwortet werden
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
slypher2005
Mitglied


Dabei seit: 27.05.10
Beiträge: 11
Forenversion: Lite 1.0

 Private Nachrichten können nicht beantwortet werden Antworten Zitieren Editieren Melden       UP

Problembeschreibung:
Wenn ich auf eine PMS Antworten möchte bekomme ich folgende Fehlermeldeung.
Hänge mal die pms.php und die geburtstagbot.php mit an.

Fehlermeldung:
rning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\vhosts\www.tiervermittlung-ohne-grenzen.de\http...tagsbot.php:216) in C:\Inetpub\vhosts\www.tiervermittlung-ohne-grenzen.de\httpdocs\pms.php on line 439

Link zum Forum oder Screenshot:
www.tiervermittlung-ohne-grenzen.de

Was wurde zuletzt geändert oder eingebaut?
Nix

Dateianhänge:
unknown pms.php (33 KB, 2 mal heruntergeladen)
unknown geburtstagsbot.php (13,46 KB, 0 mal heruntergeladen)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von slypher2005: 27.05.10 00:04.

27.05.10 00:03 slypher2005 ist offline E-Mail Finden Als Freund hinzufügen
Bolop Bolop ist männlich
Mitglied


images/avatars/avatar-5687.gif

Dabei seit: 12.06.04
Beiträge: 1.792
Fähigkeiten: WBB Lite 2 Fortgeschritten; WBB Lite 1 Profi
Herkunft: Darmstadt (Hessen)
Forenversion: Lite 2.0; Lite 1.0

Antworten Zitieren Editieren Melden       UP

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

Zitat:

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

Jemand der mit PHP schonmal seinen Header modifiziert hat, wird diesen Fehler sicher schonmal bekommen haben: Cannot modify header information - headers already sent. Meist beginnt nun eine frustrierte Fehlersuche, zumal man anfangs nicht mal weiß was dieser Fehler genau bedeutet (mir ging es ähnlich) und darum will ich hier mal versuchen den “Cannot modify header information“-Fehler zu erläutern und Tipps zur Lösung bzw. zur Vermeidung des Problems geben (Tipps und Anregungen um diesen Artikel noch hilfreicher zu machen bitte in den Kommentaren posten).

Wie entsteht dieser Fehler
Wenn man mit PHP zum Beispiel auf eine andere Seite weiterleiten will, kann man dies über eine Modifizierung des Headers machen. Man verändert also Daten, die nicht zur eigentlichen Ausgabe von HTML gehören. Allerdings ist es wichtig das alle Modifizierungen am Header gemacht werden, bevor auch nur ein Zeichen HTML-Code ausgegeben wird. Ihr könnt also euren Header in mehrern Dateien bearbeitet und ändern und ihn dann abschicken, so lange ihr vorher kein Zeichen HTML-Code ausgegeben habt.

Jetzt fragt ihr euch sicherlich wie das denn nun passieren kann, das der Header vorher abgeschickt wird. Sobald der PHP-Compiler auf eine HTML-Ausgabe stößt, schickt er als erstes den Header ab und fängt dann an den HTML-Code auszugeben. Das ist definitiv richtig und gut, doch dadurch können sich schnell Fehler einschmuggeln, denn schon ein einzelnes Leerzeichen an der falschen Stelle kann zum unbeliebten Cannot modify header information-Fehler führen.

Kurz zusammengefasst: Header modifzieren so oft ihr wollt, dann erst HTML ausgeben.

Wodurch wird der Header-Fehler am häufigsten erzeugt

* Leerzeichen - dies dürfte der absolute Spitzenreiter sein, ein Leerzeichen welches sich eingeschmuggelt hat und PHP dazu “zwingt” den Header früher zu verschicken als gewünscht
* echo/print - mit diesen beiden lassen sich HTML-Ausgaben innerhalb von PHP erzeugen. Natürlich wird dadurch auch der Header gesendet
* Fehlermeldung - Fehlermeldungen sind gut, doch wenn sie nicht in eine Log-Datei geschrieben werden, sondern im Browser ausgegeben werden, zählen sie wiederum als HTML und der Header ist auch in diesem Falle futsch

Den Fehler finden
Wie schon oben angedeutet ist ein “eingeschmuggeltes” Leerzeichen der häufigste Fehler und in 90% der Fälle der Grund für ein Cannot modify header information - headers already sent, darum sollte man sich erstmal damit beschäftigen.
In der Fehlermeldung werden in der Regel zwei PHP-Dateien angegeben wodurch der Fehler aufgetreten ist, diese öffnet ihr als erstes und schaut nach ob vor und nach euren PHP-Start- und Schließtags Leerzeichen oder Leerzeilen sind, diese müsst ihr dann entfernen:

Das Leerzeichen in diesem Beispiel ist schwer zu erkennen und genau das macht diesen Fehler so tückisch: In euren PHP-Dateien könnte dies auch der Grund für den Header-Fehler sein.

Sollte dies den Fehler nicht beheben dann prüft euren Code nach Ausgabe die mit “echo” und “print” erzeugt werden. Bei mir lag der Fehler zum Beispiel daran, das ich ein Codebeispiel verwendet habe, indem ein “echo” platziert war. Sucht also in eure eigenen PHP-Dateien und in den Scripten die ihr einbindet nach “echo” oder “print”-Ausgaben. Das gleiche gilt für Fehlermeldungen die ihr direkt im Browser ausgebt.

Ein Template-System schafft Abhilfe
Um die Ausgaben an geordneter Stelle zu tätigen, also nachdem alle Dateien den Header nach ihren Anliegen modifiziert haben, empfiehlt sich der Einsatz eines Template-Systems. Dadurch könnt ihr eure Ausgaben abspeichern und erst später ausgeben. Ihr behaltet durch das Template-System die Übersicht und könnt Fehlermeldungen und dergleichen dennoch innerhalb der Dateien erzeugen, an das Template-System weitergeben und dann zum Schluß ausgeben.

Zusatz zum Header-Problems
Oliver hat mich in einem Kommentar darauf aufmerksam gemacht, dass man auch erstmal alle Ausgaben in einen Ausgabepuffer schreiben kann und erst nachdem man quasi alles hinzugefügt hat, den Ausgabepuffer leert. Mehr dazu hier: PHP ob_start-Manual.

[UPDATE - 05.12.] Wieder 30 Minuten meines Lebens verloren auf der Suche nach der Ursache für den Headers already sent Fehler:
header-sent-error2.png

Wie man vielleicht sieht, sind nach der PHP Anweisung noch Leerzeilen, Gott weiß wie die da hingekommen sind, als ich aber gerade in einem anderen Bereich den Fehler bekam, ging es erstmal auf die Suche nach der Ursache. In der Fehlermeldung wurde mir auch das besagte Script angegeben, doch auch beim dritten durchsehen konnte ich den Fehler nicht finden, wer denkt auch schon an sowas wie Leerzeilen unterhalb der PHP-Anweisung…


Quelle: http://webdesignblog.de/webdesign/cannot...ter-php-fehler/
27.05.10 01:22 Bolop ist offline E-Mail Finden Als Freund hinzufügen Füge Bolop in deine Kontaktliste ein AIM-Name von Bolop: xshivatm YIM-Name von Bolop: bolop90@ymail.com MSN Passport-Profil von Bolop anzeigen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB Lite 1.0.x » [WBB Lite 1.0.x] Allg. Fragen und Probleme » Private Nachrichten können nicht beantwortet werden