WordPress & Webwork

Plugins und Fehlermeldung

Bei einigen Plugins für WordPress, die ich bis jetzt installiert habe, kam sehr oft Fehlermeldung folgender Art:

Warning: Cannot modify header information – headers already sent by
(output started at /www/…/wp-content/plugins/xyz.php:27) in
/www/…/wp-xyz.php on line 188

Ich habe da schon einiges probiert (u.a. die Firewall abgeschaltet) leider hat nichts geholfen. Abhilfe gibt es in dem man in der jeweiligen Plugindatei ganz am Anfang (nach <?php) die Zeile ob_start(); eintippt. Hier ein Beispiel:

<?php
ob_start();
…

Soweit ich es verstanden habe, hat dies irgendetwas mit Cookies bzw. Sessions zu tun, den irgendeine Datei bzw. Anwendung sendet schon vorher Headerinformationen.

Vielen Dank für den Tipp an Stefan.

Nachtrag: bei einigen Plugins lässt sich das Problem auch beheben in dem man das überflüssige Leerzeichen in der Zeile des schliessenden ?> bzw. in der Zeile danach entfernt.

7 Reaktion(en)

  1. hipslu

    ich glaub ja noch immer nicht wirklich, dass es das problem war; aber ich hatte dieses problem auch bereits – die lösung war: das leerzeichen vor <?php zu löschen 🙂

  2. Boris

    Oha, ich hatte das Problem auch schon dreimal, soweit ich mich erinnere. Jedesmal war es definitiv ein überzähliges Leerzeichen ganz am Dateiende nach dem schließenden ?>. (PHP-Ende)

  3. Perun

    @Boris,
    ich sehe gerade, für ein Plugin, ist anscheinend dies die Lösung. Das mit Leerzeichen am Anfang kannte ich, aber mit Leerzeichen am Ende wusste ich bis jetzt nicht.

    Das andere Plugin allerdings, hat auch kein Leerzeichen am Ende.

  4. Sascha Carlin

    Das Problem bei diesen Fehlern ist, das eine Ausgabe generiert wird, bevor die HTTP-Header gesendet werden. Mit Cookies hat das nur in so fern zu tun, als das Cookies natürlich ebenfalls HTTP-Header benutzen.

    Die Lösung ist immer, die Ausgabe von Zeichen so lange zu unterbinden, bis alle Header gesendet wurden. Bei PHP-Skripten ist das oft ein Leerzeichen oder eine Leerzeile vor <?php oder nach ?>.

    Eine andere Möglichkeit ist, den Output-Buffer zu benutzen, was Du mit ob_start(); tust. Der Output-Buffer sorgt dafür, das die Ausgabe bis zur Beendigung des Skripts bzw. zum zum Aufruf von ob_end_flush();

  5. Michael

    "ob_start();"

    Das verzögert aber auch die Anzeige beim Client – besonders bei größeren Seiten kann man das schon merken.

  6. Pingback: Ein Hauch von Ewigkeit - Langauer.net - Kippe aus, anschnallen, Schnauze halten! » Probleme mit Polyglot und ImageCounter

Die Kommentare in diesem Beitrag sind geschlossen.

✉ WordPress-Newsletter ✉

Tipps und News als E-Mail in deinem Postfach? Dann abonniere einfach den ersten deutsch­sprachigen Word­Press-Newsletter:


Der Newsletter ist hinterher jederzeit abbestellbar.

Eintragen!