(PHP 4, PHP 5)
popen — 打開(kāi)進(jìn)程文件指針
說(shuō)明
resource popen ( string$command
, string $mode
)
打開(kāi)一個(gè)指向進(jìn)程的管道,該進(jìn)程由派生給定的 command 命令執(zhí)行而產(chǎn)生。
參數(shù)
command
命令。
mode
模式。
返回值
返回一個(gè)和 fopen() 所返回的相同的文件指針,只不過(guò)它是單向的(只能用于讀或?qū)懀┎⑶冶仨氂? pclose() 來(lái)關(guān)閉。此指針可以用于 fgets(),fgetss() 和 fwrite()。 當(dāng)模式為 'r',返回的文件指針等于命里的 STDOUT,當(dāng)模式為 'w',返回的文件指針等于命令的 STDIN。
如果出錯(cuò)返回 FALSE
。
范例
Example #1 popen() 例子
<?php
$handle = popen("/bin/ls", "r");
?>
如果未找到要執(zhí)行的命令,會(huì)返回一個(gè)合法的資源。這看上去很怪,但有道理。它允許訪問(wèn) shell 返回的任何錯(cuò)誤信息:
Example #2 popen() 例子
<?php
error_reporting(E_ALL);
/* 加入重定向以得到標(biāo)準(zhǔn)錯(cuò)誤輸出 stderr。 */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
注釋
Note:
如果需要雙向支持,使用 proc_open()。
Note: 安全模式 啟用時(shí),可僅可用 safe_mode_exec_dir 執(zhí)行文件。實(shí)際上,現(xiàn)在不允許在到可執(zhí)行的路徑中存在 .. 組件。
Warning安全模式 啟用時(shí),命令字符串會(huì)被 escapeshellcmd() 轉(zhuǎn)換。因此,echo y | echo x 會(huì)變成 echo y | echo x。
參見(jiàn)
pclose() - 關(guān)閉進(jìn)程文件指針 fopen() - 打開(kāi)文件或者 URL proc_open() - 執(zhí)行一個(gè)命令,并且打開(kāi)用來(lái)輸入/輸出的文件指針。