WordPress-FehlerMeldungen von WordPress
WordPress-Warnung „headers already sent“: Ursache finden und abstellen
Die Warnung bedeutet: Eine PHP-Datei hat schon Text an den Browser geschickt, bevor WordPress Header wie Weiterleitungen oder Cookies setzen konnte. Schuld sind fast immer Leerzeilen oder Leerzeichen vor „<?php“ oder nach „?>“, ein unsichtbares BOM am Dateianfang oder eine andere PHP-Warnung, die zuerst ausgegeben wurde. Die Meldung verrät die Stelle: Hinter „output started at“ stehen Datei und Zeile. Entfernst Du dort die Ausgabe, verschwindet die Warnung.
So sieht die Meldung aus
Warning: Cannot modify header information - headers already sent by (output started at …)Warning: session_start(): Session cannot be started after headers have already been sentError: Cookies are blocked due to unexpected output. For help, please see this documentation or try the support forums.Fehler: Cookies sind wegen einer unerwarteten Ausgabe gesperrt. Hilfe findest du in dieser Dokumentation (engl.) oder wende dich an die Support-Foren.
Woran es liegt.
Leerzeichen vor <?php oder nach ?>
Alles außerhalb der PHP-Tags schickt der Server sofort an den Browser, schon eine einzelne Leerzeile. Steht so etwas am Anfang oder Ende der wp-config.php oder einer functions.php, ist die Ausgabe gestartet. Spätere Header schlagen dann fehl.
Unsichtbares BOM am Dateianfang
Manche Editoren speichern UTF-8-Dateien mit einer Byte-Reihenfolge-Markierung, kurz BOM. Diese drei Bytes sieht man im Editor nicht, PHP gibt sie aber als Text aus. Die Meldung zeigt dann auf Zeile 1 der Datei.
Eine andere Warnung kam zuerst
Ist die Fehleranzeige eingeschaltet, schreibt PHP Hinweise wie „Deprecated“ oder „Warning“ direkt in die Seite. Genau diese Ausgabe löst die Warnung zu den Headern aus. Die eigentliche Ursache ist dann die erste Meldung weiter oben.
Ausgabe mit echo an der falschen Stelle
Ein Plugin oder eingefügter Schnipsel gibt mit echo, print oder var_dump etwas aus, bevor WordPress fertig ist. Oft ist es Testcode, der nach der Fehlersuche vergessen wurde.
Pufferung auf dem neuen Server fehlt
Mit der Einstellung output_buffering hält PHP die ersten Kilobytes einer Seite zurück. Kleine Ausgaben fallen dann nicht auf. Nach einem Umzug zu einem Server ohne Pufferung erscheint die Warnung plötzlich, obwohl sich am Code nichts geändert hat.
So behebst Du den Fehler.
Leg vor jeder Änderung eine Sicherung von Dateien und Datenbank an. Geh die Schritte der Reihe nach durch und prüf nach jedem, ob die Seite wieder lädt.
Die Meldung richtig lesen
Die Warnung enthält zwei Pfade. Entscheidend ist der in Klammern hinter „output started at“: Dort begann die Ausgabe, die Zeilennummer folgt nach dem Doppelpunkt. Der Pfad am Ende, oft wp-includes/pluggable.php, zeigt nur, wo WordPress danach scheiterte. Diese Datei änderst Du nicht.
Datei sichern und im Code-Editor öffnen
Lade die Datei aus der Klammer per FTP herunter und leg eine Kopie beiseite. Öffne sie in einem Editor, der Leerzeichen und Kodierung anzeigt, zum Beispiel Visual Studio Code oder Notepad++.
Leerzeilen vor <?php und nach ?> löschen
Die Datei muss mit „<?php“ ganz oben in Zeile 1 beginnen, ohne ein Zeichen davor. Nach einem schließenden „?>“ am Ende darf nichts mehr folgen. Am sichersten entfernst Du das „?>“ am Dateiende ganz. Bei reinen PHP-Dateien ist das erlaubt und in WordPress üblich.
BOM entfernen
Zeigt die Meldung auf Zeile 1 und ist davor nichts zu sehen, steckt fast immer ein BOM in der Datei. Speichere sie als „UTF-8“ statt „UTF-8 with BOM“ oder „UTF-8-BOM“. Per SSH findest Du alle betroffenen PHP-Dateien mit dem Befehl unten.
Terminal (SSH) grep -rl --include='*.php' $'^\xEF\xBB\xBF' wp-config.php wp-content/Frühere Warnungen zuerst beheben
Stehen über der Warnung weitere Meldungen, kümmere Dich zuerst um die oberste. Auf einer Live-Seite gehören Fehlermeldungen außerdem ins Protokoll statt auf den Bildschirm. Mit diesen Zeilen in der wp-config.php landen sie nur noch in wp-content/debug.log.
wp-config.php define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );Ausgaben im eigenen Code entfernen
Stammt die Stelle aus einem Schnipsel, such dort nach echo, print_r oder var_dump außerhalb von Vorlagen. Code, der weiterleitet oder Cookies setzt, muss vor jeder Ausgabe laufen, etwa auf dem Hook init oder template_redirect.
Plugin als Auslöser eingrenzen
Führt der Pfad in einen Plugin-Ordner, aktualisiere das Plugin oder deaktiviere es unter Plugins → Installierte Plugins. Bleibt die Warnung danach weg, melde sie dem Entwickler mit dem vollständigen Text.
Beim Hoster nach output_buffering fragen
Taucht die Warnung erst nach einem Serverwechsel auf, frag den Hoster, ob output_buffering aktiv ist. Den Wert einzuschalten verdeckt das Problem aber nur. Sauber gelöst ist es erst, wenn die Ausgabe aus der Datei verschwunden ist.
Zuletzt geprüft am 25. September 2026.
So kommt er nicht wieder.
- PHP-Dateien immer als UTF-8 ohne BOM speichern und das schließende ?> am Dateiende weglassen.
- Auf der Live-Seite Fehlermeldungen ins Protokoll schreiben lassen statt auf den Bildschirm.
- Testausgaben mit var_dump oder echo nach der Fehlersuche sofort wieder löschen.
- Die wp-config.php nur in einem Code-Editor bearbeiten, nie in einem Textprogramm.
Fragen zu Cannot modify header information: headers already sent
Was bedeutet „headers already sent“ bei WordPress?
Warum kann ich mich wegen der Warnung nicht einloggen?
Warum tritt der Fehler nur auf einem Server auf?
Reicht es, die Warnung auszublenden?
Verwandte Fehler
- Cookies sind gesperrt oder werden nicht unterstütztDer Login scheitert, weil das Test-Cookie fehlt. Meist Cache, falsche Adresse oder eine alte COOKIE_DOMAIN.
- Login-Schleife: Anmeldung lädt immer wiederDie Anmeldung klappt, doch WordPress zeigt wieder die Login-Seite. Meist Cookies, Adresse oder ein Plugin.
- Parse error: syntax errorPHP kann eine Datei nicht lesen. Meist fehlt nach einem eingefügten Schnipsel ein Semikolon oder eine Klammer.
- Weißer Bildschirm (White Screen of Death)Leere weiße Seite ohne Meldung. Meist ein versteckter PHP-Fehler aus Plugin, Theme oder Speicherlimit.
Lieber eine Website, die einfach läuft?
Wir bauen Websites, die schnell laden und ohne Update-Stress laufen. Oder wir übernehmen Deine WordPress-Seite samt Pflege. Erst Dein Paket, dann ein Termin per Video.

Erst Dein Paket, dann der Termin
Im Preisrechner tippst Du an, was Dich bremst. Du siehst sofort Dein Paket mit Preisspanne. Danach wählst Du direkt einen Termin, das Gespräch läuft per Video.
Dein Preis in 2 Minuten