Aktueller Standort: Startseite> Neueste Artikel> Warum meldet Header () einen Fehler "bereits gesendete Header"? Ursachen und Lösungen

Warum meldet Header () einen Fehler "bereits gesendete Header"? Ursachen und Lösungen

M66 2025-06-05

In PHP wird die Header () -Funktion zum Senden von RAW -HTTP -Header -Informationen verwendet. Es wird normalerweise zur Umleitung, zum Einstellen von Seiteninhaltstypen, Cache -Steuerung und anderen Vorgängen verwendet. Wenn Sie jedoch die Funktion Header () verwenden, begegnen Sie jedoch häufig auf eine Fehlermeldung: "Die bereits gesendeten Headers". Dieser Artikel erläutert die Ursachen und Lösungen für dieses Problem ausführlich.

Was ist der Fehler "Headers bereits gesendet"?

Wenn Sie die Funktion Header () in einem PHP -Skript verwenden, müssen Sie Header -Informationen vor einer Ausgabe senden (z. B. HTML -Inhalt, Leerzeichen, Zeilenumbrüche usw.). Dieser Fehler ergeben sich, wenn das PHP -Skript den Inhalt gesendet hat (d. H. Es werden Daten ausgegeben, bevor die Funktion Header () aufgerufen wird). Eine Fehlermeldung fordert normalerweise "bereits gesendete Headers" auf, was bedeutet, dass die Header -Nachricht an den Browser gesendet wurde und nicht erneut gesendet werden kann.

Warum tritt dieser Fehler auf?

Zu den häufigen Ursachen für "bereits gesendete" Header "Fehler sind:

  1. HTML oder Leerzeichen werden im Voraus ausgegeben :
    Dieser Fehler wird ausgelöst, wenn HTML -Inhalte, Leerzeichen oder neue Zeilen im PHP -Skript ausgegeben wurden, bevor die Funktion Header () aufgerufen wird. Besonders Räume oder Neulisten außerhalb von PHP -Tags ( <? Php?> ) Lassen sich leicht übersehen.

  2. Dateicodierungsprobleme :
    Wenn das Codierungsformat der PHP-Datei UTF-8 ist und die Datei eine BOM (Byte-Bestellmarke) enthält, wird die BOM als Ausgabe angesehen, auch wenn der Ausgabeinhalt nicht oben in der Datei angezeigt wird, was dazu führt, dass die Headerinformationen im Voraus gesendet werden.

  3. Ausgabepufferproblem :
    In einigen Fällen können die Ausgangspuffereinstellungen von PHP unangemessen sein, was zu Inhaltsausgaben im Voraus führt. Wenn Sie beispielsweise den Ausgangspuffer nicht mit OB_Start () starten, kann PHP einen Teil der Ausgabe senden, bevor Sie Header () aufrufen.

Wie beheben Sie den Fehler "bereits gesendete" Headers gesendet "?

  1. Stellen Sie sicher, dass es vor dem Header () -Anruf keine Ausgabe gibt :
    Sie müssen den Code vor dem Header () -Anruf überprüfen, um sicherzustellen, dass keine HTML -Ausgabe- oder Whitespace -Zeichen vorhanden sind. Sogar ein Platz oder eine neue Linie wirft diesen Fehler aus. Das Beste, was Sie tun können, ist, die Header () -Funktion oben im PHP -Skript zu platzieren, um sicherzustellen, dass keine Ausgabe vorhanden ist.

    Fehlerbeispiel :

     <html>
    <body>
    <?php
    header("Location: https://m66.net/somepage.php");  // Dieses Verbot meldet einen Fehler
    ?>
    </body>
    </html>
    

    Richtiges Beispiel :

     <?php
    header("Location: https://m66.net/somepage.php");  // Richtig verwenden
    exit();
    ?>
    <html>
    <body>
    </body>
    </html>
    
  2. Überprüfen Sie die Dateicodierung und entfernen Sie die BOM :
    Wenn Ihre Datei UTF-8 codiert ist und BOM enthält, können Sie die Datei über einen Texteditor (z. B. Sublime-Text, Notepad ++) neu rahlen und das BOM-Format ohne ihn auswählen. Wenn Sie beim Lesen von Dateien mithilfe von File_get_Contents () oder fopen () Dateien lesen, sollten Sie außerdem sicherstellen, dass keine BOM enthalten ist.

  3. Aktivpuffer aktivieren :
    Sie können den Ausgangspuffer am Anfang des PHP -Skripts aktivieren und den Puffer über ob_start () starten, sodass Sie selbst bei Ausgabe im Puffer vorübergehend gespeichert werden können, bis Sie OB_end_flush () manuell aufrufen oder das Skript endet.

    Beispiel :

     <?php
    ob_start();  // Ausgangspufferung starten
    header("Location: https://m66.net/somepage.php");  // Diese Zeile meldet keine Fehler
    ob_end_flush();  // Ausgabepufferinhalt
    exit();
    ?>
    
  4. Überprüfen Sie die importierten Dateien :
    Wenn Sie die Einführung anderer PHP -Dateien verwenden oder benötigen , müssen Sie sicherstellen, dass diese Dateien die Funktion Header () nicht aufrufen, bevor Sie etwas ausgeben. Sie können den Header () -Anruf vor allen anderen PHP -Code einsetzen, um sicherzustellen, dass er durch den Ausgabeinhalt nicht beeinträchtigt wird.

  5. Debugging -Tools :
    Mit der Funktion Header_Sent () können Sie Probleme diagnostizieren. Diese Funktion zeigt Ihnen, wo und wann die Header -Nachricht gesendet wurde. Sie können es verwenden, um herauszufinden, wo sich der Fehler befindet.

    Beispiel :