2012-11-13 63 views
1

我嘗試從PHP文件中像這樣運行罐子:爲什麼exec('java -jar file.jar')不工作在瀏覽器上,但在命令行上工作?

exec("java -jar /home/florinbuda/NetBeansProjects/monkey1/dist/monkey1.jar", $result);   
print_r($result); 

,如果我從命令行運行它喜歡它的工作原理:

$ php runner.php 

但如果我嘗試它不工作通過HTTP的本地主機服務器進行加載/ runner.php頁面只是保持永遠加載而無須給予任何錯誤..

在.jar文件我添加了一個簡單的測試,現在如果jar甚至開始工作

public static void main(String[] args) { 
    new File("/home/florinbuda/Desktop/xxx").mkdir(); 

,正如你可以猜到 - 當我打電話HTTP的本地主機服務器/ runner.php罐子甚至沒有開始執行...

這是權利的問題?你有什麼建議?

+1

這可能是權利,Apache用戶或任何通常有非常有限的權利,使黑客更難 – durron597

+0

也許嘗試'exec(「whoami」,$結果)'看看如果該用戶有權利的文件和目錄你'重新嘗試接觸。 – apsillers

+0

好想法! 我得到不同的結果控制檯和瀏覽器 'florinbuda'和'www-data'。現在是如何給www-data權限來運行java的問題? –

回答

4

是的,這是許可的問題。

你應該chmod父文件夾的.jar文件。

chmod 755 -R /home/florinbuda/NetBeansProjects/monkey1/dist/ 

編輯:然後你的腳本應該是這樣的:

exec("PATH_TO/java -jar /home/florinbuda/NetBeansProjects/monkey1/dist/monkey1.jar"); 
+0

是的,它在最後的工作,但我也不得不chmod目標目錄 –

0

在bash的環境變量是不是在EXEC相同的()。至少使用java bin的完整路徑。您也可以嘗試運行/ path/to/java來查看正常輸出是否正常工作。

相關問題