2013-03-08 57 views
1

以下代码在运行“php test.php”(PHP 5)的Windows 7中从命令提示符执行时有效 - 输出只是“测试”。但是,当php(v5)运行在本地主机apache服务器(v2.2)上运行的浏览器时,它不起作用 - 即没有输出(同时使用直接回显,刷新和使用AJAX方法)。该过程已成功启动(使用proc_get_status进行验证)(意味着对我来说许可问题也可以)。似乎是与管道有关。有任何想法吗?是否有一件我错过的知名品?PHP proc_open管道异常(Win7/Apache2.2)

<?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); 
?> 

回答

3

也许你的Apache服务器作为“系统”作为非交互式服务。许多事情都无法正常工作,也可能是控制台应用程序的管道此外,您可能有权限问题,因为您的控制台(它的工作原理)具有用户(您的)权限,而衍生控制台具有系统权限。

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

+0

也许是这样。我刚刚在JSP中用等效的活动(在Apache Tomcat上)重新实现。它达到了最初的目标。谢谢。 – 2013-03-08 15:53:39