我在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
答案 0 :(得分:12)
原来这是一个特定于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');
答案 1 :(得分:2)
我设法让这个与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);
答案 2 :(得分:1)
您是否有理由使用mxmlc jar文件来编译Flex应用程序?您尝试过使用可执行文件或ant任务吗?
也许编译时间过长会导致PHP脚本超时?
答案 3 :(得分:0)
对任何语言来说,Exec总是很棘手: - )
尝试:
java占用100%的CPU是很奇怪的。我无法用使用exec()时遇到的任何常见错误来解释它...尝试发送一个SIGQUIT来转储线程,然后读取转储 - 可能你会想出一些东西。