setcookie, Header-Informationen können nicht geändert werden - Header wurden bereits gesendet

Der Fehlermeldung "Cannot modify header information - headers already sent" tritt normalerweise auf wenn ein PHP-Skript versucht, ein Cookie zu senden oder den Browser des Benutzers auf eine andere Seite umzuleiten, aber einige Ausgabe bereits an den Browser gesendet wurde. Dies kann durch Folgendes verursacht werden:

  • Leerzeichen oder andere Zeichen vor dem Öffnungs-PHP-Tag im Skript
  • ein Echo, Print oder andere Anweisung, die Ausgabe an den Browser sendet, bevor die setcookie() oder header()-Funktion aufgerufen wird
  • eine PHP-Erweiterung oder andere Software, die automatisch Kopfzeilen an die Antwort anfügt, wie ein Ausgabepuffer-Handler

Beispiel:

<?php

// Dies wird den Fehler verursachen, da die Ausgabe bereits an den Browser gesendet wurde
echo "Hallo Welt!";

// Dies wird nicht funktionieren, da die Kopfzeilen bereits gesendet wurden
setcookie("test", "Wert");

Um das Problem zu beheben, sollten Sie sicherstellen, dass vor dem Aufruf von setcookie() oder header() keine Ausgabe an den Browser gesendet wird. Dies kann erreicht werden, indem alle Leerzeichen oder andere Zeichen vor dem Öffnungs-PHP-Tag entfernt werden, indem Echo oder andere Anweisungen, die Ausgabe an den Browser senden, nach setcookie() oder header() aufgerufen werden, oder indem PHP-Erweiterungen oder andere Software deaktiviert werden, die automatisch Kopfzeilen an die Antwort anfügen.