1

以下代码在运行“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);
?>
4

1 回答 1

4

可能您的 apache 服务器作为非交互式服务作为“系统”运行。许多事情将无法正常工作,并且可能还会为控制台应用程序提供管道。此外,您可能会遇到权限问题,因为您的控制台(它工作的地方)具有用户(您的)权限,而生成的控制台具有系统权限。

如果您真的需要管道,您可以尝试以用户(而不是系统)身份运行 apache 并配置启用桌面交互的服务。

于 2013-03-08T13:03:33.923 回答