[英]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总是很棘手:-)
尝试:
Java占用100%的CPU是很奇怪的。 我无法用使用exec()时犯的任何常见错误来解释它...尝试向其发送SIGQUIT来转储线程,然后读取转储-也许您会发现一些问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.