| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
php://php:// — さまざまな入出力ストリームへのアクセス 説明PHP ではさまざまな入出力ストリームを提供しています。 これらを使うと、PHP 自身の入出力ストリームへのアクセスや 標準入出力と標準エラー出力のファイル記述子へのアクセス、 メモリやディスクを使ったテンポラリファイルストリームへのアクセスができ、 フィルタを使って他のファイルリソースの読み書きに手を加えることもできます。 php://stdin, php://stdout および php://stderr
php://stdin、php://stdout
および php://stderr は、PHP プロセスの
対応する入出力ストリームへの直接アクセスを許可します。
これらのストリームは複製されたファイル記述子を参照します。そのため、
php://stdin をオープンしたあとでそれを閉じたとしても、
識別子のコピーが閉じられるだけです。 php://stdin は読み込み専用で、 php://stdout および php://stderr は書き込み専用です。 php://inputphp://input は読み込み専用のストリームで、 リクエストの body 部から生のデータを読み込むことができます。 POST リクエストの場合は $HTTP_RAW_POST_DATA よりも php://input を使うのが望ましいでしょう。php.ini ディレクティブの設定に依存しないからです。 さらに、$HTTP_RAW_POST_DATA がデフォルトで設定されない場合は、 always_populate_raw_post_data を有効にするよりも $HTTP_RAW_POST_DATA を使うほうがメモリの消費量が少なくなるでしょう。 php://input は、 enctype="multipart/form-data" に対しては使用できません。
php://fdphp://fd は、指定したファイル記述子に直接アクセスすることができます。 たとえば php://fd/3 は、ファイル記述子 3 を指します。 php://memory および php://tempphp://memory および php://temp は読み書き可能なストリームで、一時データをファイルのように保存できるラッパーです。 両者の唯一の違いは、 php://memory が常にデータをメモリに格納するのに対して php://temp は定義済みの上限 (デフォルトは 2 MB) に達するとテンポラリファイルを使うという点です。 このテンポラリファイルの場所は、 sys_get_temp_dir() 関数と同じ方法で決めます。 php://temp のメモリ制限を制御するには /maxmemory:NN を追加します。この NN はメモリに保持するデータの最大量で、単位はバイトです。 このサイズを超えるとテンポラリファイルを使います。 php://filterphp://filter は、フィルタアプリケーションが ストリームをオープンすることを許可するために設計されたメタラッパーです。 これは、readfile()、file() および file_get_contents() のようなオールインワンの ファイル関数とともに使用すると有用です。これらの関数には、コンテンツが 読み込まれる前にストリームにフィルタを適用する手段がありません。 php://filter の対象は、 次のようなパラメータをパスの一部として受け取ります。 ひとつのパスに対して複数のフィルタチェインを指定できます。 これらのパラメータの詳細は、使用例を参照ください。
変更履歴
例例1 php://temp/maxmemory このオプションパラメータは、php://temp がテンポラリファイルを使うようになるまでのメモリの制限を設定します。
<?php 例2 php://filter/resource=<フィルタの対象となるストリーム> このパラメータは、 php://filter 指定の最後に存在し、フィルタリング したいストリームを指している必要があります。
<?php 例3 php://filter/read=<読み込みチェーンに適用するフィルタのリスト> このパラメータは 1 つ以上のフィルタ名を パラメータとしてとり、それらはパイプ文字 | で区切られます。
<?php 例4 php://filter/write=<書き込みチェーンに適用するフィルタのリスト> このパラメータは 1 つ以上のフィルタ名を パラメータとしてとり、それらはパイプ文字 | で区切られます。
<?php 例5 php://memory と php://temp は再利用できない php://memory と php://temp の再利用はできません。つまり、いったんストリームを閉じてしまったら、もうそれを参照できないということです。
file_put_contents('php://memory', 'PHP'); |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「php:// - さまざまな入出力ストリームへのアクセス」をGoogle検索
|