簡體   English   中英

從PHP exec調用Java

[英]Calling java from PHP exec

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

原來這是特定於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占用100%的CPU是很奇怪的。 我無法用使用exec()時犯的任何常見錯誤來解釋它...嘗試向其發送SIGQUIT來轉儲線程,然后讀取轉儲-也許您會發現一些問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM