PHPの$http_response_header変数とは?HTTPレスポンスヘッダーの取得方法を実例で解説
はじめに
PHPには、$http_response_headerという特殊な変数が用意されています。これはget_headers()関数と同様に、HTTPレスポンスヘッダーの内容を格納するスーパーグローバル的な配列です。ただし一般的なスーパーグローバル変数($_GETや$_POSTなど)とは異なり、file_get_contents()などHTTPラッパーを使ってURLにアクセスした際に、PHPのローカルスコープ内に自動的に生成されるという特徴があります。
この変数を活用することで、追加の関数呼び出しを行わずとも、直前のHTTPリクエストに対するステータスコードやサーバー情報、コンテンツタイプなどのヘッダー情報を簡単に取得できます。
$http_response_headerの基本仕様
- 型: 配列(array)
- 生成タイミング:
file_get_contents()やfopen()など、HTTPラッパー経由でリモートファイルにアクセスした直後 - スコープ: アクセスが行われたローカルスコープにのみ存在(includeされたファイル内でも参照可能)
- 格納内容: レスポンスヘッダーが1行ずつ文字列として順番に格納される。リダイレクトが発生した場合は、各段階のヘッダーがすべて連結して格納されます
サンプルコード
以下は、file_get_contents()でローカルサーバーにアクセスし、$http_response_headerの中身をforeachループで表示する例です。
<?php
file_get_contents("https://localhost");
$arr=$http_response_header;
foreach ($arr as $key=>$val)
echo "<p>$key=>$val </p>";
?>実行結果(出力例)
ブラウザには以下のような結果が表示されます。最初の「302 Found」はリダイレクト応答を示しており、その後「200 OK」という最終的な正常応答のヘッダーが続いているのが分かります。
0=>HTTP/1.1 302 Found 1=>Date: Tue, 08 Sep 2020 14:49:24 GMT 2=>Server: Apache/2.4.41 (Win64) OpenSSL/1.0.2s PHP/7.1.32 3=>X-Powered-By: PHP/7.1.32 4=>Location: https://localhost/dashboard/ 5=>Content-Length: 0 6=>Connection: close 7=>Content-Type: text/html; charset=UTF-8 8=>HTTP/1.1 200 OK 9=>Date: Tue, 08 Sep 2020 14:49:24 GMT 10=>Server: Apache/2.4.41 (Win64) OpenSSL/1.0.2s PHP/7.1.32 11=>Last-Modified: Mon, 02 Sep 2019 15:45:31 GMT 12=>ETag: "1d99-59193dc9c3cc0" 13=>Accept-Ranges: bytes 14=>Content-Length: 7577 15=>Connection: close 16=>Content-Type: text/html
まとめ
$http_response_headerは、HTTP通信の結果を手軽に確認できる便利な変数です。特にAPIのレスポンス検証やエラーハンドリングの際に役立ちます。なお、より柔軟な制御が必要な場合は、stream_context_create()と組み合わせるか、cURL関数群の利用も検討するとよいでしょう。
-
PHPのpi()関数とは?使い方と定義済み定数との対応を実例付きで解説
pi()関数の定義と使い方PHPのpi()関数は、数学定数π(円周率)の値を返す関数です。戻り値はfloat型の「3.14159265359」であり、PHPにあらかじめ定義されている定数M_PIとまったく同じ値になります。構文pi ( void ) : floatパラメータこの関数は引数を受け取りません。引数なしでそのまま呼び出すことができます。戻り値pi()関数は数学定数πの値を返し、定義済みの数学定数M_PIと等価です。数式の中では、M_PIの代わりにpi()関数を使うこともできます。対応するPHPバージョンこの関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用
-
PHPでXMLファイルの内容を出力(エコー)する方法をわかりやすく解説
はじめにPHPでは、各種ラッパー(wrappers)の仕組みによって、HTTP URLをローカルファイルと同じように扱うことができます。そのため、外部URL上にあるXMLファイルの内容も、通常の関数を使って簡単に取得・出力できます。この記事では、代表的な3つの方法をサンプルコード付きで紹介します。方法1:file_get_contents() を使う最もシンプルなのが file_get_contents() 関数を使う方法です。URLの内容を文字列として取得し、echo でそのまま出力できます。$file = file_get_contents(https://example.com/); e