我在 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 程序中的请求/响应完成之前以某种方式超时吗?
感谢您提供任何见解/类似经验,感谢您的帮助!