Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem des PHP-Header-Fehlers

So lösen Sie das Problem des PHP-Header-Fehlers

藏色散人
藏色散人Original
2021-10-20 11:12:535056Durchsuche

Lösung für ungültigen PHP-Header: 1. Entfernen Sie das Leerzeichen zwischen der Position und dem Symbol „:“ 2. Es kann keine Ausgabe erfolgen, bevor der Header verwendet wird. 3. Ändern Sie php.ini, um den Cache zu öffnen, und legen Sie „output_buffering=“ fest 0 „Geändert in 409.

So lösen Sie das Problem des PHP-Header-Fehlers

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie kann das Problem des PHP-Header-Fehlers gelöst werden?

Ursachenanalyse und Lösungen für PHP-Header-Fehler

Wenn Sie den Header („location:test.php“) zum Springen in PHP verwenden, achten Sie bitte auf die folgenden Punkte:

1 „Zwischen den Zeichen dürfen keine Leerzeichen stehen:“, sonst kommt es zu einem Fehler.

2. Vor der Verwendung des Headers darf keine Ausgabe erfolgen, auch keine Leerzeichen nach dem Tag „?>“! !

3. Der PHP-Code nach dem Header wird ebenfalls ausgeführt.

Fortsetzung:

Problem: Geben Sie Inhalte vor der Header-Funktion ein

Im Allgemeinen können HTML-Inhalte nicht vor der Header-Funktion ausgegeben werden. Ebenso gibt es setcookie() und session-Funktionen müssen Nachrichtenkopfinformationen zum Ausgabestream hinzufügen. Wenn es Anweisungen wie echo gibt, bevor header() ausgeführt wird, wird beim späteren Auftreten von header() der Fehler „Warnung: Header-Informationen können nicht geändert werden – Header wurden bereits gesendet von …“ gemeldet. Das heißt, dass vor diesen Funktionen kein Text, keine Leerzeilen, kein Wagenrücklauf usw. stehen darf und es am besten ist, die Funktion „exit()“ nach der Funktion „header()“ hinzuzufügen. In der folgenden falschen Schreibweise befindet sich beispielsweise eine Leerzeile zwischen den beiden PHP-Codeausschnitten:

//Dies sollte eine Leerzeile sein

Ursache:

Wenn das PHP-Skript mit der Ausführung beginnt, kann es Senden Sie gleichzeitig HTTP-Header-Informationen (Titel) und Body-Informationen. Der HTTP-Nachrichtenheader (von der Header()- oder SetCookie()-Funktion) wird nicht sofort gesendet, sondern in einer Liste gespeichert Ändern Sie die Header-Informationen, einschließlich der Standard-Header (z. B. Content-Type-Header). Sobald das Skript jedoch eine Nicht-Header-Ausgabe sendet (z. B. mithilfe von HTML oder einem print()-Aufruf), muss PHP zunächst alle Header und senden Beenden Sie dann den HTTP-Header. Fahren Sie dann mit dem Senden der Hauptdaten fort. Ab diesem Zeitpunkt ist jeder Versuch, Header-Informationen hinzuzufügen oder zu ändern, unzulässig und es wird eine der oben genannten Fehlermeldungen gesendet.

Lösung:

Ändern Sie php.ini, um Caching (output_buffering) zu aktivieren, ändern Sie „output_buffering=0“ in „output_buffering=4096“

oder verwenden Sie die Cache-Funktionen ob_start(), ob_end_flush() usw. im Programm . Das Prinzip ist: Wenn „output_buffering“ aktiviert ist, sendet PHP den HTTP-Header nicht, wenn das Skript eine Ausgabe sendet. Stattdessen leitet es diese Ausgabe an einen dynamisch wachsenden Cache weiter (nur verfügbar in PHP 4.0, das über einen zentralisierten Ausgabemechanismus verfügt). Sie können weiterhin Header ändern/hinzufügen oder Cookies setzen, da die Header nicht tatsächlich gesendet werden. Wenn alle Skripte beendet sind, sendet PHP automatisch HTTP-Header an den Browser und sendet dann den Inhalt des Ausgabepuffers.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem des PHP-Header-Fehlers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet PHP x86?Nächster Artikel:Was bedeutet PHP x86?