2013-10-28 108 views
-1

我有一個PHP exec()命令奇怪的問題。PHP exec()無法正常工作,但在SSH工作IronWorker

我試圖運行一個稱爲鐵工人的perticular寶石。

exec('iron_worker upload Renode 2>&1',$output,$error); 
var_dump($output); 

這是我試圖運行命令,但unfornunately不代碼上傳到服務,它只顯示

------> Creating client 

相反,當我運行與命令SSH,它工作正常,文件被找到並且代碼被上傳。

如果我做了print_r($ output); http://pastebin.com/4SLDqQyX

可能是什麼問題? php exec命令僅在開始時停止並且不會繼續。

謝謝!

回答

1

通過分析iron_worker源代碼,它看起來使用HOME變量環境並阻止沒有設置HOME env變量的地方。

我建議你在用PHP運行腳本之前用putenv("HOME=/home/my_user/");設置變量。

+0

它確實解決了我的問題!添加putenv後,我的代碼出現了問題。謝謝 ! – user2914878

0

這個程序似乎需要一個HOME目錄才能運行。你必須把它添加到sudoers文件(其中HTTP是網絡服務器和foo是在機器上的用戶):

http ALL=(foo) NOPASSWD: /path/to/program/or/script 

哦,我忘了系統()部分..

system("sudo -u foo /path/to/program/or/script"); 

我會建議將該程序放在/ home/foo /中。我希望這適用於你:)