popen

打开进程文件指针 (PHP 3, PHP 4, PHP 5)
resource popen ( string command, string mode )

说明

打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。

返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets()fgetss()fwrite()

如果出错返回 FALSE

注意:

如果需要双向支持,使用 proc_open()

例 591. popen() 例子

<?php
$handle
= popen("/bin/ls", "r");
?>
注意:

如果未找到要执行的命令,会返回一个合法的资源。这看上去很怪,但有道理。它允许访问 shell 返回的任何错误信息:

<?php
error_reporting
(E_ALL);

/* &#21152;&#20837;&#37325;&#23450;&#21521;&#20197;&#24471;&#21040;&#26631;&#20934;&#38169;&#35823;&#36755;&#20986; stderr&#12290; */
$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()