質問

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プロセスのCPU使用率が100%になり、戻りません。

アイデアはありますか

「/ 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は、どの言語でも常に注意が必要です:-)

お試しください:

  • バックグラウンド実行を使用(& 末尾の記号)
  • 代わりにshell_execを使用します
  • へのフルパスを指定します java実行可能ファイル(おそらく PHPで利用できるのはあなたではありません 必要ですか?)
  • 単純なHelloWorld javaを実行します 問題がJavaにあるかどうかを確認するアプリ、または 特にmxmlcで

javaのCPU使用率が100%であることは奇妙です。 exec()を使用したときによくある間違いで説明できません...スレッドをダンプするためにSIGQUITを送信して、ダンプを読んでみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top