PHP マニュアル
前のページ | 付録 M. サポートされるプロトコル/ラッパー | 次のページ

# PHP 入出力ストリーム

PHP 3.0.13 以降で、`php://output`。 および PHP 4.3.0 以降で `php://input`、 PHP 5.0.0 以降で `php://filter`

- `php://stdin`

- `php://stdout`

- `php://stderr`

- `php://output`

- `php://input`

- `php://filter`

`php://stdin`、`php://stdout` および `php://stderr` は、PHP プロセスの 対応する入出力ストリームへのアクセスを許可します。

`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` 指定の最後に存在し、フィルタリング したいストリームを指している必要があります。

  `<?php /* これは単純に以下と同じです。 readfile("http://www.example.com"); なぜなら、実際のところ何のフィルタ処理も行われないからです。 */ readfile("php://filter/resource=http://www.example.com"); ?>`

- /read=<読み込みチェーンに適用するフィルタのリスト> （任意）このパラメータは 1 つ以上のフィルタ名を パラメータとしてとり、それらはパイプ文字 | で区切られます。

  `<?php /* これは、www.example.com のすべての内容を 大文字に変換して出力します。 */ readfile("php://filter/read=string.toupper/resource=http://www.example.com"); /* これは上の例と同じですが、それに加えて ROT13 エンコード処理を行います。 */ readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com"); ?>`

- /write=<書き込みチェーンに適用するフィルタのリスト> （任意）このパラメータは 1 つ以上のフィルタ名を パラメータとしてとり、それらはパイプ文字 | で区切られます。

  `<?php /* これは、文字列 "Hello World" に対して rot13 フィルタを適用し、カレントディレクトリの example.txt に書き込みます。 */ file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World"); ?>`

- /<両方のチェーンに適用するフィルタのリスト> （任意）read= あるいは write= の指定をされていないすべてのフィルタは、 読み込みチェーンと書き込みチェーンの両方に（適宜）適用されます。

表 M-6. ラッパーの概要（php://filter については、 フィルタされる側のラッパーの概要を参照します）

属性 | サポートの有無
--- | ---
allow_url_fopen で制約される | No
読み込み許可 | php://stdin および php://input のみ。
書き込み許可 | php://stdout、 php://stderr および php://output のみ。
追加許可 | php://stdout、 php://stderr および php://output のみ（書き込みと同じ）。
同時読み書き許可 | No. これらのラッパーは一方通行です。
stat() のサポート | No
unlink() のサポート | No
rename() のサポート | No
mkdir() のサポート | No
rmdir() のサポート | No

前のページ | ホーム | 次のページ
FTP と FTPS | 上に戻る | 圧縮ストリーム