在 PHP 的 exec()
函数中,你可以使用管道符(|
)来将一个命令的输出作为另一个命令的输入
$output"; ?>
在这个例子中,command1
的输出将被传递给了 command2
。请注意,为了确保管道符正常工作,你需要确保 PHP 进程具有足够的权限来执行这些命令。
如果你需要在 PHP 脚本中创建管道并处理数据,你可以使用 proc_open()
函数。这是一个更高级的选项,允许你更好地控制子进程和管道。以下是一个使用 proc_open()
的示例:
['pipe', 'r'], // 标准输入,子进程从此管道中读取数据 1 => ['pipe', 'w'], // 标准输出,子进程向此管道中写入数据 2 => ['pipe', 'w'] // 标准错误,子进程向此管道中写入错误信息 ], $pipes); // 从标准输入中读取数据并写入到标准输出 if (is_resource($process)) { fclose($pipes[0]); // 不需要向子进程传递任何输入,所以关闭此管道 $output = stream_get_contents($pipes[1]); fclose($pipes[1]); $error_output = stream_get_contents($pipes[2]); fclose($pipes[2]); // 关闭管道资源 proc_close($process); // 打印输出 echo "$output"; // 打印错误输出(如果有) if (!empty($error_output)) { echo "Error:$error_output"; } } else { echo "Failed to start the process."; } ?>
在这个例子中,我们使用 proc_open()
创建了一个管道,将 command1
的输出传递给了 command2
。然后我们从子进程的输出和错误管道中读取数据,并在完成后关闭所有管道和资源。