HTTP(s) URL へのアクセス

# http://

# https://

http:// -- https:// — HTTP(s) URL へのアクセス

### 説明

HTTP 1.0 により HTTP GET メソッドを用いてファイル/リソースに読み込みのみの アクセスが可能です。仮想ホストにホスト名でアクセスするために、 Host: ヘッダが送信されます。 php.ini ファイルまたはストリームコンテキストによって user_agent 文字列を設定している場合、 それはリクエストの中にも含まれます。

ストリームにより、リソースの body にアクセスすることが できます。ヘッダは、$http_response_header 変数に保存されます。

(全てのリダイレクトが処理された後に)ドキュメント取得元のリソースの URL を知ることが 重要な場合、ストリームから返された一連のレスポンスヘッダを処理する必要があります。

from ディレクティブが設定されており、かつそれが コンテキストオプションとパラメータ で上書きされていない場合は、その値が From: ヘッダとなります。

### 利用法

- http://example.com
- http://example.com/file.php?var1=val1&var2=val2
- http://user:password@example.com
- https://example.com
- https://example.com/file.php?var1=val1&var2=val2
- https://user:password@example.com

### オプション

ラッパーの概要
属性 | サポートの可否
--- | ---
allow_url_fopen で制約される | Yes
読み込み可 | Yes
書き込み可 | No
追記可能 | No
同時読み書き可 | N/A
stat() をサポート | No
unlink() をサポート | No
rename() をサポート | No
mkdir() をサポート | No
rmdir() をサポート | No

### 変更履歴

バージョン | 説明
--- | ---
4.3.7 | バグのある IIS サーバーを検出し、"SSL: Fatal Protocol Error" エラーを回避するようになりました。
4.3.0 | https:// が追加されました。
4.0.5 | リダイレクトをサポートするようになりました。

### 例

例1 リダイレクト後の URL の検出

`<?php
$url = 'http://www.example.com/redirecting_page.php';
$fp = fopen($url, 'r');
$meta_data = stream_get_meta_data($fp);
foreach ($meta_data['wrapper_data'] as $response) {
/* リダイレクトされているか? */
if (strtolower(substr($response, 0, 10)) == 'location: ') {
/* $url をリダイレクト先に書き換える */
$url = substr($response, 10);
}
}
?>`

### 注意

> 注意: HTTPS がサポートされるのは、openssl 拡張モジュールが有効な場合のみです。

HTTP 接続は読み込みのみ可で、HTTP リソースにデータを書き込んだり ファイルをコピーしたりすることはできません。

たとえば POST および PUT リクエストを送信することも、 HTTP コンテキスト を使えば可能です。

### 参考

- HTTP コンテキストオプション
- $http_response_header
- stream_get_meta_data() - ヘッダーあるいはメタデータをストリームまたはファイルポインタから取得する