Start · Sprachen · PHP · Referenz · apache_response_headers

apache_response_headers

Funktion

Gibt ein assoziatives Array aller aktuell gesetzten HTTP-Antwort-Header zurück.

seit PHP 4.3.0 Kategorie: misc

Signatur

apache_response_headers(): array|false

Beschreibung

apache_response_headers() liefert ein assoziatives Array mit allen HTTP-Antwort-Headern, die bis zum Aufruf der Funktion für die aktuelle Anfrage gesetzt wurden. Die Schlüssel des Arrays entsprechen den Header-Namen, die Werte den zugehörigen Header-Werten.

Die Funktion ist nützlich, um zur Laufzeit zu prüfen, welche Header das Skript bereits gesetzt hat – etwa um doppelte Header zu vermeiden oder um das Debugging zu vereinfachen. Sie funktioniert nicht nur unter Apache, sondern auch in anderen SAPI-Umgebungen wie FPM (ab PHP 5.4 als eigenständige Funktion verfügbar).

Im Gegensatz zu headers_list(), das ein indiziertes Array mit Strings zurückgibt, liefert apache_response_headers() ein assoziatives Array, was den direkten Zugriff auf einzelne Header über ihren Namen ermöglicht.

Die Funktion gibt false zurück, wenn ein Fehler auftritt oder keine Header-Informationen verfügbar sind.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, in dem die Schlüssel die Header-Namen und die Werte die zugehörigen Header-Werte sind. Im Fehlerfall wird false zurückgegeben.

Beispiele

Alle gesetzten Antwort-Header ausgeben

<?php
header('Content-Type: text/html; charset=UTF-8');
header('X-Powered-By: MeinFramework/1.0');
header('Cache-Control: no-cache, no-store, must-revalidate');

$headers = apache_response_headers();

if ($headers !== false) {
    foreach ($headers as $name => $value) {
        echo htmlspecialchars($name) . ': ' . htmlspecialchars($value) . PHP_EOL;
    }
} else {
    echo 'Header konnten nicht abgerufen werden.';
}
Content-Type: text/html; charset=UTF-8 X-Powered-By: MeinFramework/1.0 Cache-Control: no-cache, no-store, must-revalidate

Prüfen, ob ein bestimmter Header bereits gesetzt wurde

<?php
header('X-Custom-Header: Vorhanden');

$headers = apache_response_headers();

if ($headers !== false && isset($headers['X-Custom-Header'])) {
    echo 'X-Custom-Header ist gesetzt: ' . htmlspecialchars($headers['X-Custom-Header']);
} else {
    echo 'X-Custom-Header wurde noch nicht gesetzt.';
    header('X-Custom-Header: Jetzt gesetzt');
}
X-Custom-Header ist gesetzt: Vorhanden

// Wichtig · Fallstricke

Kompatibilität: Obwohl der Funktionsname auf Apache hinweist, ist apache_response_headers() seit PHP 5.4 auch außerhalb des Apache-Webservers (z. B. unter PHP-FPM oder dem eingebauten Entwicklungsserver) verfügbar.

Unterschied zu headers_list(): headers_list() gibt ein numerisch indiziertes Array mit vollständigen Header-Strings zurück (z. B. 'Content-Type: text/html'), während apache_response_headers() ein assoziatives Array liefert und den direkten Zugriff per Header-Name erlaubt.

Timing: Die Funktion zeigt nur Header, die bereits per header() oder durch PHP intern gesetzt wurden. Header, die nach dem Aufruf von apache_response_headers() gesetzt werden, sind im zurückgegebenen Array nicht enthalten.