6

我在 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

4

4 回答 4

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');
于 2008-12-12T18:45:15.880 回答
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);
于 2010-12-20T10:58:29.110 回答
1

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

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

于 2008-11-10T19:27:08.947 回答
0

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

尝试:

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

奇怪的是java占用了100%的CPU。我无法用使用 exec() 时犯的任何常见错误来解释它...尝试向它发送一个 SIGQUIT 以转储线程,然后读取转储 - 可能你会弄清楚一些事情。

于 2008-11-10T19:37:48.707 回答