从PHP exec调用java

Kee*_*eth 6 php java apache-flex exec

我在PHP中执行以下操作:

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

当我从命令行运行它时,它运行正常并在一两秒内完成.

当我从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

Kee*_*eth 12

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

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

exec('java -version');
Run Code Online (Sandbox Code Playgroud)

修复是在命令前加上

export DYLD_LIBRARY_PATH="";
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 哇,这节省了我的一天!谢谢! (2认同)