Das Aktivieren von Output_Buffering erzeugt 404-Fehler auf zufälligen Seiten

Lesezeit: 3 Minuten

Benutzer-Avatar
mcheah

Ich habe mit gespielt output_buffering in php (bestätigt durch phpinfo()) und ich habe gerade festgestellt, dass ich beim Einschalten zufällige 404-Fehler auf meinen Seiten bekomme, aber der Seiteninhalt wird gut geladen und alles sieht gut aus.

Dies geschieht nur an meiner Produktionsstätte. PHP 5.5.35, Apache/2.4.18 (Unix). Ich habe keine Ahnung, woher dieser 404 gesendet wird. Hat jemand eine Idee, was passieren könnte, oder was ich auf meinem Server suchen kann, um das Problem zu beheben?

Dies sind meine Antwortheader, falls das überhaupt relevant ist:

Cache-Control:s-maxage=10
Cache-Control:no-cache, must-revalidate, max-age=0
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:13021
Content-Type:text/html; charset=UTF-8
Date:Fri, 02 Feb 2018 18:31:59 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Keep-Alive:timeout=5, max=96
Server:Apache
Strict-Transport-Security:max-age=31536000; includeSubDomains; preload
Vary:Accept-Encoding
X-Powered-By:PHP/5.5.35

BEARBEITEN: Ich habe festgestellt, dass dieses Problem nur auf Seiten auftritt, auf denen ich „neueste Beiträge“ aus einer WordPress-Instanz lade. Es ist nicht wirklich eine Option für mich, dieses kleine Widget zu entfernen, aber ich nehme an, dass es einen Grund gibt, einen 404-Header zu setzen. Irgendwelche Gedanken?

  • Es ist technisch in Ordnung, eine Seite mit dem Antwortcode = 404 und (potentiell nützlichem) Inhalt zu haben (i) können Sie uns sagen, was das erwartete Ergebnis ist … 404 oder 200 (ii) könnten Sie bestätigen, ob das Verhalten zufällig ist oder vorhersagbar?

    – Salmann A

    6. Februar 2018 um 17:28 Uhr


  • Ich erwarte 200, und das Verhalten ist … seltsam. Ich sehe manchmal Seiten mit einem 404-Fehler und eine harte Aktualisierung bringt nichts – der Fehler kommt zurück. Dann komme ich am nächsten Morgen und jede Seite, die nicht funktioniert hat, kommt mit einem 200-Status zurück. Ich schätze also unberechenbar, aber nicht von einer Sekunde auf die andere.

    – mcheah

    6. Februar 2018 um 17:38 Uhr

  • Seltsam. Überprüfen Sie auf jeden Fall die PHP-Fehlerprotokolle auf “Header kann nicht geändert werden” oder ähnliches. Posten Sie alle Fehler, die Sie finden.

    – Salmann A

    6. Februar 2018 um 18:26 Uhr

Benutzer-Avatar
dhinchliff

Ich denke, was passiert, ist, dass Ihr Code in einigen Fällen 404 ausgibt, unabhängig davon, ob die Ausgabepufferung ein- oder ausgeschaltet ist. aber wenn Ausgangspufferung ist aus Der Header kann nicht gesetzt werden, da er bereits geschrieben wurde und eine Warnung wie diese generiert:

Warnung: Header-Informationen können nicht geändert werden – Header wurden bereits von (Ausgabe gestartet bei /file.php:20) in /file.php in Zeile 100 gesendet

Sie können den 404 also nur sehen, wenn die Ausgabepufferung aktiviert ist an Dadurch können Sie Header jederzeit festlegen, bevor die Puffer in die Ausgabe geschrieben werden.

  • Dies ist möglich, aber ich erhalte diesen Fehler nur, wenn mein WordPress-Widget für kürzlich veröffentlichte Posts versucht, Cache-Control-Header festzulegen. Ich kann mir nicht vorstellen, warum WordPress einen 404 sendet und von welcher Stelle im Code er stammt. Haben Sie Empfehlungen, um das herauszufinden?

    – mcheah

    6. Februar 2018 um 17:42 Uhr

  • Stellen Sie einen Fehlerhandler ein, um Warnungen abzufangen, und sehen Sie, ob dies der Fall ist. Wenn es eine Warnung wie die gibt, die ich vorschlage, hat Ihre Nachricht einen Dateinamen und eine Zeilennummer.

    – dhinchliff

    6. Februar 2018 um 17:44 Uhr

  • Vielleicht können Sie alle Warnungen in eine Protokolldatei senden codex.wordpress.org/Debugging_in_WordPress

    – dhinchliff

    6. Februar 2018 um 17:46 Uhr

  • Ich habe definitiv den Fehler “Header-Informationen können nicht geändert werden” ständig erhalten, aber er bezieht sich auf die Datei wordpress functions.php zum Setzen von Nocache-Headern. Ich denke, Sie haben Recht, etwas hier sendet einen 404 und es ist eher eine WordPress-Frage als eine output_buffering-Frage.

    – mcheah

    6. Februar 2018 um 22:44 Uhr

1211780cookie-checkDas Aktivieren von Output_Buffering erzeugt 404-Fehler auf zufälligen Seiten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy