Java程序的运行方式与shell和PHP中的exec()不同

时间:2012-12-03 16:38:23

标签: java php exec shell-exec

我在Web服务器上运行Java程序并传递来自PHP变量的参数,我遇到了一个令人困惑的问题。当我从shell运行它并使用PHP从shell_exec()运行它时,我正在使用的Java程序似乎表现出不同的行为。

如果我使用像Putty这样的工具从命令行执行程序,如下所示:

ksh runexample.ksh ClassName methodName

它运行正常,意味着程序发送请求,大约20秒后从它连接的网关服务器收到响应。然后,我可以通过在外部数据库中查看结果记录来看到通信成功。

现在,当我使用。

从PHP脚本执行此程序时,会出现问题
shell_exec('path/ssh user@xxx.xx.xxxx.xx.x "cd /path/path/examples/ ksh runexample.ksh ClassName methodName;')

如果我加载这个PHP脚本,并且输出var_dump(),程序似乎加载;但它给了我一个来自Java程序的简短通用消息,如“程序在连接模式下运行等”,并且不输出通常的响应。 PHP脚本几乎立即使用此输出加载页面。此外,外部数据库中不会创建任何记录。

我在脚本中有set_time_limit(0),但是这个问题可能是由于shell_exec()在Java程序中的请求/响应完成之前以某种方式超时了吗?

感谢您提供任何见解/类似经验,感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

可能是因为在运行应用程序时没有加载(或另一个).profile文件。

我做了一些与你在这里做的非常类似的事情,结果是posting this question here,作为this question的后续行动,现在两者都可能对您有用