Signatur
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
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.';
}
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');
}
// 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.