headers_list

(PHP 5, PHP 7)

headers_list送信した (もしくは送信される予定の) レスポンスヘッダの一覧を返す

説明

array headers_list ( void )

headers_list() はブラウザもしくはクライアントに送信されるヘッダの数値配列を返します。 これらのヘッダが送信されたかどうかを判断するためには headers_sent() を使用します。

返り値

ヘッダを、数値添字の配列で返します。

例1 headers_list() の使用例

<?php

/* setcookie() でレスポンスヘッダをそれ自身に追加します */
setcookie('foo''bar');

/* 独自のレスポンスヘッダを定義します。
   これはほとんどのクライアントで無視されます */
header("X-Sample-Test: foo");

/* レスポンスがプレーンテキストだと宣言します */
header('Content-type: text/plain');

/* 送信しようとしているヘッダは? */
var_dump(headers_list());

?>

上の例の出力は以下となります。

array(4) {
  [0]=>
  string(23) "X-Powered-By: PHP/5.1.3"
  [1]=>
  string(19) "Set-Cookie: foo=bar"
  [2]=>
  string(18) "X-Sample-Test: foo"
  [3]=>
  string(24) "Content-type: text/plain"
}

注意

注意:

ヘッダにアクセスできたりヘッダを出力したりするのは、 それに対応した SAPI を使っている場合のみです。

参考

add a note add a note

User Contributed Notes 3 notes

up
14
Anonymous
5 years ago
note that it does not return the status header

<?php

header
('HTTP/1.1 301 Moved Permanently', true, 301);

header('foo: bar');
header('a: b');
header('colon less example');

print_r(headers_list());
?>

Array
(
    [0] => X-Powered-By: PHP/5.4.7
    [1] => foo: bar
    [2] => a: b
)
up
2
SOLO2
5 years ago
Function to check if a particular header has been added to the list:

<?php

function header_sent($header) {
   
$headers = headers_list();
   
$header = trim($header,': ');
   
$result = false;

    foreach (
$headers as $hdr) {
        if (
stripos($hdr, $header) !== false) {
           
$result = true;
        }
    }

    return
$result;
}

?>
up
1
arnold at jasny dot net
8 months ago
This function won't work for when you're running PHP from the command line. If will always return an empty array. This can be an issue when testing your project using PHPUnit or Codeception.

To solve this, install the xdebug extension and use `xdebug_get_headers` when on the cli.

<?php
$headers
= php_sapi_name() === 'cli' ? xdebug_get_headers() : headers_list();
?>
To Top