2016-07-07 140 views
0

我試圖從使用exec()命令,更準確地使用PHP腳本執行.jar文件:如何使用PHP執行java -jar文件,並將由.jar創建的文件加載到服務器?

<?php 

    $command = 'java -jar myfile.jar'; 

    exec($command, $output); 

?> 

兩個PHP腳本,以及罐子都在服務器上的同一目錄下。 myfile.jar生成一個excel電子表格,我希望這個電子表格可以創建或存儲在服務器上相同的目錄或另一個目錄中。當我在我的電腦的終端執行myfile.jar時,程序工作正常,並將文件輸出到.jar所在的目錄。

任何想法?

最好的問候。

+0

很可能這是一個權限問題,其中服務器(Apache?)實際上不允許運行java,或者java腳本沒有訪問寫入權限才能寫入文件。 嘗試通過cli自己運行php腳本,方法是輸入'php -q <你的php腳本的名稱>',看看會發生什麼。如果它有效,那意味着你有很高的可能性,確實是一個權限問題。 – Tularis

+0

你可以試試'$ command ='cd output_folder && java -jar /full/path/to/myfile.jar';' – Arnauld

+0

1)** var_dump($ output); **說什麼?如果它告訴你什麼都沒有,2)用java調用創建一個shell腳本,並將stderr(使用2>)輸出到一個文件中。從PHP調用腳本,然後檢查文件中可能出現的stderr錯誤。 3)確保Java可以從你工作的用戶的目錄中調用。 – Werner

回答

0

如果我理解正確,您想要執行myfile.jar文件,它會返回一些數據並將其保存到文件中?如果您不需要編輯數據,你可以使用:

exec ('java -jar myfile.jar > output.xml'); 
+0

這工作,我可以從output.xml讀取,它被致命錯誤截斷。現在,Java程序完成其運行,並沒有問題。但是,excel文件正在創建並空出來。我懷疑這與Java代碼用來生成電子表格的FileOutputStream有關。你能爲我指出正確的方向嗎 ? – Aerials

+0

你好天線, 我在這裏發現了一些關於你的問題: http://stackoverflow.com/questions/3789691/how-to-run-java-program-and-get-output-in-php – Scriptman

0

好了,我在我的Windows安裝PHP和現在用的EasyPHP測試,如果我有我自己的計算機上的服務器。 PHP代碼工作正常,但從$輸出變量,我可以注意到,該程序突然發生致命錯誤。 我設法去除了這個錯誤來自PHP對運行腳本的時間限制。 我用set_time_limit(0);並糾正了這一點。現在Java程序完成其運行,並沒有問題。 但是,excel文件正在創建並空出來。我懷疑這與Java代碼用來生成電子表格的FileOutputStream有關。 你能指出我正確的方向嗎?