(PHP 4, PHP 5)
popen — プロセスへのファイルポインタをオープンする
説明
int
popen ( string command, string mode )
command で与えられたコマンドを
fork() して実行し、そのプロセスへのパイプをオープンします。
fopen()
により返されたファイルポインタと同様のものを返しますが、
それは(読み書きのいずれか一方でのみ使われる)片方向ストリームであり、
pclose()
によりクローズされなければならないところが異なります。
このポインタは、
fgets()、
fgetss()
および
fwrite() のいずれかで使うことができます。
エラーが起こった場合
FALSE を返します。
注意:
双方向(two-way)のサポートを求めているのなら、
proc_open() を使用してください。
例 628. popen() の例
<?php
$handle = popen("/bin/ls", "r");
?>
実行すべきコマンドが見つからない場合には、正常なリソースが返されます。
おかしなことと思われるかもしれませんが、これには意味があります。
これによってシェルから返されたエラーメッセージにアクセスすることができるのです。
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/spooge 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
注意:
セーフモード が有効な場合、
safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。
実際的な理由により、現在、実行プログラムへのパスに
..を
含めることはできません。
pclose()、
fopen()、
proc_open() も参照してください。