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

PHPのhttp://ラッパーとは?HTTP/HTTPSストリームラッパーの使い方を解説

はじめに

https:// および https:// ラッパーは、HTTPプロトコル経由でリソースやファイルへの読み取り専用アクセスを可能にするストリームラッパーです。名前ベースの仮想ホストを扱う場合には、Host: ヘッダーが user_agent(php.ini で設定されている場合)とともに送信されます。

HTTPヘッダー情報は $http_response_header 変数に格納されます。このヘッダーを処理することで、from: ヘッダーの情報をもとに、ドキュメントがどのURLのリソースから取得されたものなのかを把握できます。

なお、HTTPSは php.ini の設定で openssl 拡張モジュールが有効になっている場合にのみ利用可能です。また、HTTP・HTTPSどちらの接続も読み取り専用であり、ファイルへの書き込みやコピーはサポートされていません。

使い方

ファイル名(URL)は、以下のようにさまざまな形式で指定できます。

https://localhost
https://example.com
https://localhost?name='Ram'&age=20
https://example.com
https://username:password@abc.com

使用例

次のスクリプトは、fopen() でHTTPのURLを開き、stream_get_meta_data() を使ってヘッダーのメタデータを取得する例です。

<?php
$url = 'https://www.tutorialspoint.com/php7/php7_closure_call.htm';
if (!$fp = fopen($url, 'r')) {
    trigger_error("Unable to open URL ($url)", E_USER_ERROR);
}
$meta = stream_get_meta_data($fp);
print_r($meta);
?>

上記のスクリプトは、HTTPのURLからヘッダーのメタデータを読み取ります。実行すると、以下のような配列が出力されます。

Array(
    [crypto] => Array(
        [protocol] => TLSv1.2
        [cipher_name] => ECDHE-RSA-AES128-GCM-SHA256
        [cipher_bits] => 128
        [cipher_version] => TLSv1/SSLv3
    )

    [timed_out] =>
    [blocked] => 1
    [eof] =>
    [wrapper_data] => Array(
        [0] => HTTP/1.0 200 OK
        [1] => Age: 1310067
        [2] => Cache-Control: max-age=2592000
        [3] => Content-Type: text/html; charset=UTF-8
        [4] => Date: Mon, 14 Sep 2020 17:15:36 GMT
        [5] => Expires: Wed, 14 Oct 2020 17:15:36 GMT
        [6] => Last-Modified: Sun, 30 Aug 2020 13:21:09 GMT
        [7] => Server: ECS (nag/99AA)
        [8] => Strict-Transport-Security: max-age=63072000; includeSubdomains
        [9] => Vary: Accept-Encoding
        [10] => X-Cache: HIT
        [11] => X-Content-Type-Options: nosniff
        [12] => X-Frame-Options: SAMEORIGIN
        [13] => X-XSS-Protection: 1; mode=block
        [14] => Content-Length: 24102
        [15] => Connection: close
    )
    [wrapper_type] => http
    [stream_type] => tcp_socket/ssl
    [mode] => r
    [unread_bytes] => 0
    [seekable] =>
    [uri] => https://www.tutorialspoint.com/php7/php7_closure_call.htm
)

この出力から、使用されているTLSプロトコルや暗号方式、HTTPステータスコード、キャッシュ情報など、通信に関する詳細なメタデータを確認できます。Web APIのレスポンス検証やデバッグの際に役立つでしょう。

  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