牛牛在线工具

proc_open()

收录 8868 个 PHP 函数,含用途说明与用法示例。

proc_open()

执行一个命令,并且打开用来输入/输出的文件指针

函数名称:proc_open() 函数描述:proc_open() 函数执行一个命令,并且打开用来输入/输出的文件指针。 适用版本:PHP 4 >= 4.3.0, PHP 5, PHP 7 语法:resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] ) 参数: cmd:要执行的命令,可以是一个简单的命令,或者一个包含命令和参数的数组。 descriptorspec:一个包含了用于输入/输出的文件指针的数组。每个元素是一个包含了下列键值的数组: 0:标准输入(stdin) 1:标准输出(stdout) 2:标准错误(stderr) pipes:将存储所有文件指针的数组,用于输入/输出 cwd(可选):要在其中执行命令的当前工作目录 env(可选):用于设置环境变量的数组 other_options(可选):一个包含额外选项的关联数组。支持的选项有: suppress_errors:禁止将错误输出发送到标准错误流。默认为 false。 返回值:成功时返回一个资源类型的进程标识符,失败时返回 FALSE。 示例代码: // 执行一个简单的命令并读取输出 $descriptorspec = array( 0 => array("pipe", "r"), // 标准输入 1 => array("pipe", "w"), // 标准输出 2 => array("pipe", "w") // 标准错误 ); $process = proc_open('ls -l', $descriptorspec, $pipes); if (is_resource($process)) { // 读取输出 echo stream_get_contents($pipes[1]); // 关闭文件指针 fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); // 等待进程结束,并获取返回值 $return_value = proc_close($process); } 该示例中,我们使用 proc_open() 执行了一个简单的命令 "ls -l",并使用了文件指针来读取命令的输出。通过设置适当的 descriptorspec 数组,我们可以指定输入/输出的文件指针类型。在这个例子中,我们将标准输入重定向到一个管道,将标准输出和标准错误重定向到另外两个管道。然后,我们使用 stream_get_contents() 函数从标准输出管道中读取命令的输出。最后,我们关闭所有文件指针,并使用 proc_close() 等待进程结束并获取返回值。