PHP 入出力ストリーム
-
php://stdin
-
php://stdout
-
php://stderr
-
php://output
-
php://input
-
php://filter (PHP 5.0.0 以降で使用可能)
-
php://memory (PHP 5.1.0 以降で使用可能)
-
php://temp (PHP 5.1.0 以降で使用可能)
php://stdin 、 php://stdout および php://stderr は、PHP プロセスの 対応する入出力ストリームへのアクセスを許可します。 これらのストリームは複製されたファイル記述子を参照します。そのため、 php://stdin をオープンしたあとでそれを閉じたとしても、 識別子のコピーが閉じられるだけです。 STDIN で参照される実際のストリームは何も影響を受けません。 PHP 5.2.1 より前のバージョンでは、これに関連する挙動にバグがあります。 これらのラッパーを使うのではなく、定数 STDIN , STDOUT および STDERR を使用することを推奨します。
php://output は、 print() および echo() と同じ方法での出力バッファへの書き込みを許可します。
php://input
は、POST の生データの読み込みを 許可します。これは
$HTTP_RAW_POST_DATA
に比べて メモリ消費量が少なく、特別な
php.ini
ディレクティブを設定する 必要がありません。
php://input
は、
enctype="multipart/form-data"
に対しては 使用できません。
php://stdin および php://input は読み込み専用で、 php://stdout 、 php://stderr および php://output は書き込み専用です。
php://filter は、フィルタアプリケーションが ストリームをオープンすることを許可するために設計されたメタラッパーです。 これは、 readfile() 、 file() および file_get_contents() のようなオールインワンの ファイル関数とともに使用すると有用です。これらの関数には、コンテンツが 読み込まれる前にストリームにフィルタを適用する手段がありません。
php://filter の対象は、以下のように 'parameters' を 'path' の一部として保持します。
-
/resource=<フィルタの対象となるストリーム> ( 必須 )このパラメータは、 php://filter 指定の最後に存在し、フィルタリング したいストリームを指している必要があります。
-
/read=<読み込みチェーンに適用するフィルタのリスト> ( 任意 )このパラメータは 1 つ以上のフィルタ名を パラメータとしてとり、それらはパイプ文字 | で区切られます。
-
/write=<書き込みチェーンに適用するフィルタのリスト> ( 任意 )このパラメータは 1 つ以上のフィルタ名を パラメータとしてとり、それらはパイプ文字 | で区切られます。
-
/<両方のチェーンに適用するフィルタのリスト> ( 任意 ) read= あるいは write= の指定をされていないすべてのフィルタは、 読み込みチェーンと書き込みチェーンの両方に(適宜)適用されます。
php://memory ラッパーは、データをメモリに保存します。 php://temp も同様ですが、メモリの制限 (デフォルトは 2 MB です) を超過した際にはテンポラリファイルを使用します。
php://temp ラッパーは、次の 'parameters' を 'path' の一部として受け付けます。
-
/maxmemory:<バイト数> ( 任意 ) このパラメータは、メモリの制限 (データをテンポラリファイルに移動する閾値) のデフォルト値を変更します。
表 M-6. ラッパーの概要( php://filter については、 フィルタされる側のラッパーの概要を参照します)
| 属性 | サポートの有無 |
|---|---|
| allow_url_fopen で制約される | No |
| allow_url_include で制約される | php://input 、 php://stdin 、 php://memory および php://temp のみ。 |
| 読み込み許可 | php://stdin 、 php://input 、 php://memory および php://temp のみ。 |
| 書き込み許可 | php://stdout 、 php://stderr 、 php://output 、 php://memory および php://temp のみ。 |
| 追加許可 | php://stdout 、 php://stderr 、 php://output 、 php://memory および php://temp のみ (書き込みと同じ)。 |
| 同時読み書き許可 | php://memory および php://temp のみ。 |
| stat() のサポート | php://memory および php://temp のみ。 |
| unlink() のサポート | No |
| rename() のサポート | No |
| mkdir() のサポート | No |
| rmdir() のサポート | No |