Java程序的运行方式与shell不同,在PHP中使用exec()



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

如果我使用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程序中的请求/响应完成之前就超时了吗?

感谢您的任何见解/类似经历,我感谢您的帮助!

这可能是因为在以您的方式运行应用程序时没有(或其他)加载.profile文件。

我做了一些与你在这里所做的非常相似的事情,并最终在这里发布了这个问题,作为这个问题的后续行动,这两个问题现在都可能对你有用。

最新更新