PHP マニュアル
前のページ |  | 次のページ

# popen

(PHP 3, PHP 4, PHP 5)

popen -- プロセスへのファイルポインタをオープンする

## 説明

int popen ( string command, string mode )

`command` で与えられたコマンドを fork() して実行し、そのプロセスへのパイプをオープンします。

fopen() により返されたファイルポインタと同様のものを返しますが、 それは(読み書きのいずれか一方でのみ使われる)片方向ストリームであり、 pclose() によりクローズされなければならないところが異なります。 このポインタは、fgets()、fgetss() および fwrite() のいずれかで使うことができます。

エラーが起こった場合 `FALSE` を返します。

> 注意: 双方向(two-way)のサポートを求めているのなら、 proc_open() を使用してください。

例 1. 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の中にある実行プログラムのみ実行可能です。 実際的な理由により、現在、実行プログラムへのパスに `..`を 含めることはできません。

警告
セーフモードが有効な場合、コマンド文字列は escapeshellcmd() でエスケープされます。 つまり、`echo y | echo x` は、`echo y \| echo x` となります。

pclose()、fopen()、 proc_open() も参照してください。

前のページ | ホーム | 次のページ
pclose | 上に戻る | readfile