PHP headers_list () zeigt nicht alle Header an

ntsprechend der Dokumentation:http: //php.net/manual/en/function.headers-list.ph und dieser Kommentar:http: //php.net/manual/en/function.headers-list.php#11033, PHP-Code:

<?php var_dump(header_list()); ?>

Zeigt die Statusüberschriften nicht an.

Dieses seltsame Verhalten ist seltsam. Es gibt also zwei Fragen:

Warum (Ich bin mir nicht sicher, ob diese Frage meinungsbasiert ist, wenn ja, und es gibt keine WIRKLICHE Erklärung. Bitte lassen Sie sie weg. Ich meine, dass meinungsbasierte Fragen manchmal nicht meinungsbasiert sind und wirklich eine Erklärung haben, und das kann nicht sein vorherzusagen, bevor sie gefragt werden).Ich weiß, dass ich meine eigene Funktion zum Setzen des Headers verwenden kann, wodurch der Header gesetzt wird, und ich erinnere mich außerdem, dass dieser Header gesetzt wurde. Aber das ist eine Art ... Workaround, da header_list () ziemlich sicher ist, dassHERE, FÜR DAS. Außerdem befinden sich diese Header irgendwo im Speicher der PHP-Engine, so dass das Speichern beim zweiten Mal innerhalb des Skripts nicht speichereffizient ist. So...Was ist die Hintertür, um alle Header zu bekommen, nicht so dumm wie die Problemumgehung unten? Dies kann beispielsweise als Teil einer Debug- / Entwicklerklasse nützlich sein, die alle "Entwickler" -Daten als HTML-Kommentare am Ende der Seite darstellt.Natürlich lasse ich den Header für die Inhaltslänge weg, der zu früh ist, um ihn vorherzusagen. Es sieht so aus, als würde diese Funktion alle Überschriften weglassen, die keinen Doppelpunkt haben ... Stimmt das?

Um mehr Code zu posten, ist es einfach, die Header-Funktion zu umgehen (linear, kein Objekt, Verwendung von Globals und keine statische Klasse, nur um die Idee zu zeigen). Mit der Annahme, dass die Header-Funktion Header ohne Doppelpunkte weglässt (was vielleicht nicht ganz stimmt ...):

<?php
    // Mechanism:
    $headers = array();
    function setHeader($header) {
        header($header);
        if (strpos($header, ':') === false) {
            global $headers;
            $headers[] = $header;
        }
    }
    function getHeaders() {
        global $headers;
        return array_merge($headers, header_list());
    }

    // Example:
    setHeader('HTTP/1.1 404 Not Found');
    var_dump(getHeaders());
?>

Antworten auf die Frage(4)

Ihre Antwort auf die Frage