PHP/Apache: Mehrfachaufrufe von header() funktionieren nicht

PHP/Apache: Mehrfachaufrufe von header() funktionieren nicht

In meiner PHP-Datei habe ich diesen Code (nicht den echten Code, nur zu Demonstrationszwecken):

ob_start();
var_export(headers_sent());
var_export(ob_get_status());
header('Content-Type: text/html');
header('Content-Type: application/json');

Aber die Antwortheader lauten letztendlich statt text/html. application/jsonMeines Wissens nach header()sollte der letzte Aufruf von verwendet werden – insbesondere, da headers_sent()false zurückgibt und ob_get_status()auch bestätigt, dass die Ausgabepufferung aktiviert ist.

InPHP-Dokumentationdafür header()steht allerdings im Changelog zur Version 5.1.2 folgende Aussage:

Diese Funktion verhindert nun, dass mehr als ein Header gleichzeitig gesendet wird, als Schutz vor Header-Injection-Angriffen.

Ich bin mir jedoch nicht ganz sicher, was das bedeutet, da dies seit PHP 5.1.2 sicherlich nicht immer ein Problem war.

Und selbstWordPressist auf header()mehrmalige Aufrufe angewiesen, z. B. in , wp-admin/admin-ajax.phpwo es ganz am Anfang der Datei aufruft @header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );und dann später, wenn es festgestellt hat, dass die Aktion JSON-Daten zurückgeben muss, ruft es @header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );in wp_send_json()auf wp-includes/functions.php.

Kann ich auf dem Server eine Änderung vornehmen, damit PHP den zuletzt angegebenen Inhaltstyp verwendet? Ich kann die Wordpress-Kerndateien offensichtlich nicht ändern.

Ich verwende Debian 9.3, PHP 7.1.3, Apache 2.4.25.

Hinweis zur Site: Die Auswirkung dieses Problems besteht darin, dass die Medienbibliothek im Rastermodus keine Bilder lädt und der Aktivitätsindikator einfach weiter rotiert.

!! AKTUALISIEREN !!

Jetzt habe ich herausgefunden, dass dies passiert, weil ich Folgendes in meiner .htaccessDatei habe:

php_value output_handler mb_output_handler

Ich habe vergessen, warum ich das dort drin habe, also bin ich mir nicht sicher, ob ich es entfernen soll … Aber warum hat es diese Wirkung?

verwandte Informationen