Beim Ausführen von PHP-Skripten kann der folgende Fehler auftreten:
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23
Dieser Fehler tritt auf, wenn versucht wird, Header zu senden, nachdem die Ausgabe bereits an den Client gesendet wurde. Hier erfahren Sie, warum das passiert und wie Sie es beheben können:
Funktionen wie header(), header_remove(), session_start() und setcookie() erfordern das Senden von Headern vor jeder Ausgabe erzeugt wird. Wenn eine Ausgabe generiert wird, bevor diese Funktionen aufgerufen werden, wird die Warnung ausgelöst.
Die Ausgabe kann unbeabsichtigt erfolgen aus folgenden Gründen:
Absichtlich kann die Ausgabe generiert werden durch:
Die Fehlermeldung gibt die Zeilennummer und die Datei an, in der die vorzeitige Ausgabe erfolgt aufgetreten ist und wo header() aufgerufen wurde. Suchen Sie nach der Zeile, die im Abschnitt „Ausgabe gestartet bei“ der Fehlermeldung erwähnt wird, um festzustellen, wo die Ausgabe generiert wurde.
1. Vorzeitige Ausgabe entfernen:
Stellen Sie sicher, dass vor header()-Aufrufen keine vorzeitige Ausgabe erfolgt. Dazu gehört das Entfernen zusätzlicher Leerzeichen, Stücklisten oder absichtlicher Ausgaben wie Echo-Anweisungen.
2. Ausgabepufferung verwenden:
Ausgabepufferung kann helfen, dieses Problem zu lindern, indem die Ausgabe verzögert wird, bevor sie an den Client gesendet wird. Aktivieren Sie die Ausgabepufferung über die Konfigurationseinstellung „output_buffering“ in php.ini, .htaccess oder .user.ini.
3. Überprüfen Sie mit headers_sent():
Verwenden Sie headers_sent(), um zu prüfen, ob es möglich ist, Header zu senden, bevor vertrauliche Aktionen ausgeführt werden. Wenn headers_sent() „true“ zurückgibt, verwenden Sie alternative Methoden wie HTML-Meta-Tags oder JavaScript-Weiterleitungen.
4. Separate Steuer- und Ausgabelogik:
Refaktorieren Sie den Code, um Steuerlogik und Ausgabegenerierung zu trennen. Dies trägt dazu bei, eine vorzeitige Ausgabe zu verhindern, indem sichergestellt wird, dass Header-Aufrufe durchgeführt werden, bevor eine Ausgabe angezeigt wird.
5. Stücklisten mit Editor oder Tools korrigieren:
Stücklisten können in Textdateien vorhanden sein und zu einer vorzeitigen Ausgabe führen. Verwenden Sie Texteditoren mit Stücklistenerkennung oder Tools wie PHPTags, um Stücklistenprobleme zu beheben.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in PHP den Fehler „Header bereits gesendet' und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!