以下代码在运行“php test.php”(PHP 5)的 Windows 7 中从命令提示符执行时有效 - 输出只是“test”。但是,当 php (v5) 在 localhost apache 服务器 (v2.2) 上运行的任何浏览器上运行时,它不起作用 - 即没有输出(使用直接回显、刷新和使用 AJAX 方法)。该过程已成功启动(使用 proc_get_status 验证)(对我来说意味着权限问题也可以)。似乎与管道有关。有任何想法吗?我错过了一件众所周知的事情吗?
<?php
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w")
);
$process = proc_open("java Test", $descriptorspec, $pipes, null, null,array('bypass_shell'=>true));
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($process);
?>