PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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関数群の利用も検討するとよいでしょう。

  1. 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のすべてのバージョンで利用

  2. 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