6

PHPで次のことを行っています。

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

これをコマンド ラインから実行すると、問題なく実行され、1 ~ 2 秒で終了します。

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 ファイルを使用してフレックス アプリケーションをコンパイルする理由はありますか? 代わりに、実行可能ファイルまたは 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 に答える