繁体   English   中英

从PHP exec调用Java

[英]Calling java from PHP exec

我在PHP中执行以下操作:

exec('java -jar "/opt/flex3/lib/mxmlc.jar" +flexlib "/opt/flex3/frameworks" MyAS3App.as -default-size 360 280 -output MyAS3App.swf');

当我从命令行运行此程序时,它运行良好,并在一两秒钟内完成。

当我从PHP exec运行此命令时,java进程占用100%的CPU,并且永不返回。

有任何想法吗?

我也尝试使用'/ usr / bin / java -Djava.awt.headless = true'运行上述命令。

我正在运行Mac OS X 10.5.5,MAMP 1.7,PHP 5.2.5

原来这是特定于PHP堆栈MAMP( http://www.mamp.info/ )的错误。

证明在MAMP下失败后对JVM的任何调用,例如:

exec('java -version');

解决方法是在命令前添加前缀

export DYLD_LIBRARY_PATH="";

我也意识到没有理由使用这种调用mxmlc的方法。

所以这是最终的工作命令:

exec('export DYLD_LIBRARY_PATH=""; mxmlc MyAS3App.as -default-size 360 280 -output MyAS3App.swf');

我设法使它与MAMP一起工作。 解决方案包括:

export DYLD_LIBRARY_PATH="";
in the exec call:

$argss = "export DYLD_LIBRARY_PATH=\"\"; /usr/bin/java -jar /Applications/yourjarfile.jar";
$resultXML = exec($argss, $output);

使用mxmlc jar文件来编译Flex应用程序是否有原因? 您是否尝试过使用可执行文件或ant任务?

也许编译时间太长,以致您的PHP脚本超时?

在任何语言上,Exec总是很棘手:-)

尝试:

  • 使用后台执行(末尾添加&符号)
  • 使用shell_exec代替
  • 指定Java可执行文件的完整路径(可能是PHP可用的路径不是您需要的路径?)
  • 运行一个简单的HelloWorld Java应用程序以查看问题是在Java还是在mxmlc中

Java占用100%的CPU是很奇怪的。 我无法用使用exec()时犯的任何常见错误来解释它...尝试向其发送SIGQUIT来转储线程,然后读取转储-也许您会发现一些问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM