Aktueller Standort: Startseite> Neueste Artikel> OB_CLEAN () Der HTTP -Header wurde nach dem Löschen des Puffers gesendet. Was soll ich tun, wenn ich dieser Situation begegne?

OB_CLEAN () Der HTTP -Header wurde nach dem Löschen des Puffers gesendet. Was soll ich tun, wenn ich dieser Situation begegne?

M66 2025-07-04

In der PHP -Entwicklung wird die Funktion OB_Clean () verwendet, um den Ausgangspufferinhalt zu löschen, der bei Debugging und Leistungsoptimierung sehr häufig ist. In einigen Fällen stoßen wir jedoch auf die folgende Fehlermeldung:

 <span><span><span class="hljs-built_in">Warning</span></span><span>: Cannot modify </span><span><span class="hljs-keyword">header</span></span><span> information - headers already sent </span><span><span class="hljs-keyword">by</span></span><span> (output started at /</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/script.php:xx) </span><span><span class="hljs-keyword">in</span></span><span> /</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/script.php </span><span><span class="hljs-keyword">on</span></span><span> </span><span><span class="hljs-type">line</span></span><span> xx
</span></span>

Diese Fehleraufforderung besagt, dass PHP die HTTP -Header -Informationen, obwohl Sie OB_CLEAN () zum Löschen des Puffers aufrufen, nicht ändern können. Dies liegt daran, dass bei PHP Ausgabe (einschließlich HTML, Leerzeichen oder Fehlermeldungen usw.) sendet. HTTP -Headerinformationen werden ebenfalls automatisch gesendet. Da HTTP -Header -Informationen vor dem Ausgangsinhalt gesendet werden müssen, kann PHP, wenn die Ausgabe gestartet wurde, keine neuen Header -Informationen ändern oder senden.

1. Was ist ein HTTP -Header?

HTTP -Header -Informationen sind wichtige Metadaten, die in HTTP -Anfragen und Antworten übergeben wurden. Beispielsweise werden das Einstellen von Cookies, das Springen auf andere Seiten oder das Einstellen der Cache -Steuerung von Seiten usw. durch HTTP -Header -Informationen erreicht.

PHP bietet die Funktion Header () zum Ändern oder Hinzufügen von HTTP -Header -Informationen. Der Aufruf dieser Funktion muss jedoch vor einem Ausgabeinhalt ausgeführt werden, da ansonsten der obige Fehler "Header gesendet" auftritt.

2. Die Rolle der Funktion der obs_clean ())

Die Funktion OB_Clean () ist Teil der PHP -Ausgangspufferfunktion, mit der der Inhalt des Ausgangspuffers gelöscht wird. Normalerweise kann dieser Ansatz vermeiden, Ausgaben im Voraus zu senden und nachfolgende Headereinstellungen zu beeinflussen, wenn wir große Mengen an Ausgangsdaten verarbeiten.

Nach dem Aufrufen von OB_Clean () wirkt sich dies jedoch nicht auf den Inhalt aus, der an den Browser gesendet wurde. Wenn die Ausgabe vor dem Aufrufen von ob_clean () gesendet wurde, können die Header -Informationen nicht geändert werden.

3. Warum erscheint der Fehler "Kopf"?

Normalerweise gibt es mehrere Gründe für den Fehler "HTTP -Header":

  • PHP gibt den Inhalt aus (z. B. HTML -Tags, Leerzeichen, Fehlermeldungen usw.) bei oder bevor das Skript startet.

  • Die Echo- oder Druckfunktion wurde verwendet, um den Inhalt im Voraus auszugeben.

  • Vor und nach dem PHP -Skript gibt es zusätzliche Whitespace- oder Zeilenpausen.

Unabhängig davon, ob es sich um eine HTML -Ausgabe oder eine Art von Textausgabe handelt, sendet PHP automatisch HTTP -Headers, sodass Header -Modifikationen nach der Ausgabe nicht vorgenommen werden können.

4. Lösung

4.1 Stellen Sie sicher, dass es keine Vorabausgabe gibt

Überprüfen Sie Ihre PHP -Skripte, um sicherzustellen, dass keine Ausgabe vorhanden ist, bevor Sie die Funktion Header () aufrufen. Die Ausgabe kann enthalten:

  • HTML -Tags

  • Inhalt der Echo- oder Druckfunktion

  • Unverarbeitete Fehlermeldung

  • Whitespace -Zeichen oder Zeile bricht vor dem Start des Skripts (z. B. Leerzeichen vor und nach Beginn der Datei oder geschlossenes Tag)

4.2 Aufrufen der Funktion OB_Start ()

Um das Problem der Ausgabepufferung zu vermeiden, können Sie zu Beginn des Skripts ob_start () aufrufen. Wenn Sie dies tun, wird sichergestellt, dass PHP alle Ausgabeinhalte puffert und die Ausgabe gleichzeitig am Ende des Skripts sendet, wodurch der HTTP -Header gesendet wird.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: https://www.example.com'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>();
</span><span><span class="hljs-comment">// Ihre Codelogik</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Der Inhalt des Ausgangspuffer</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4.3 Verwenden Sie OB_end_Clean (), um den Puffer zu löschen

Ähnlich wie obs_clean () wird OB_END_CLEAN () den Inhalt des aktuellen Puffers löschen und den Puffer schließen. Es verhindert, dass der Inhalt des Puffer an den Client gesendet wird, um sicherzustellen, dass die nachfolgenden HTTP -Header -Einstellungen nicht betroffen sind.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: text/html; charset=UTF-8'</span></span><span>);
</span><span><span class="hljs-comment">// Löschen Sie den Puffer und schließen Sie ihn</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span><span><span class="hljs-comment">// Verarbeiten Sie das Skript fort</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4.4 Fehlerbehebungsfehler

Wenn der Fehler bestehen bleibt, können Sie das Problem finden, indem Sie nach allen Ausgangsquellen suchen. Stellen Sie sicher, dass das Skript keine unerwartete Ausgabe hat, bevor Sie die Funktion Header () aufrufen. Sie können bei der Fehlerbehebung durch Debugging -Modus, Protokollierung und andere Mittel helfen.

5. Zusammenfassung

Ob_Clean () verhindern bei der Löschen des Ausgabemittels sehr effektiv "Header gesendete" Fehler. Dies funktioniert jedoch nur für Inhalte, die nicht an den Browser gesendet wurden. Wenn PHP vor dem Aufrufen von Header () die Ausgabe gesendet hat, tritt der Fehler weiter. Diese Probleme können effektiv vermieden werden, indem Sie Ob_Start () zu Beginn des Skripts aufrufen, um die Ausgabepufferung zu ermöglichen und sicherzustellen, dass keine Inhaltsausgabe im Voraus vorliegt.

Das Verständnis und die korrekte Verwendung von PHP -Ausgangspufferungsmechanismus hilft Ihnen dabei, HTTP -Header und Ausgangsinhalt besser zu verwalten, wodurch robustere und effizientere PHP -Programme geschrieben werden.