PHP execからjavaを呼び出す
-
07-07-2019 - |
質問
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を送信して、ダンプを読んでみてください。
所属していません StackOverflow