[英]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總是很棘手:-)
嘗試:
Java占用100%的CPU是很奇怪的。 我無法用使用exec()時犯的任何常見錯誤來解釋它...嘗試向其發送SIGQUIT來轉儲線程,然后讀取轉儲-也許您會發現一些問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.