2011-09-13 68 views
10

我試圖使用PHP如何從php運行.sh文件?

shell腳本(/home/scripts/fix-perm.sh)運行shell腳本是在同一臺服務器

這是我努力

代碼
<?php 
echo shell_exec('/home/scripts/fix-perm.sh'); 
?> 

上面的代碼是不工作

正在使用Linux服務器

有誰能夠幫幫我嗎?

+5

它是返回一個錯誤還是隻是沒有做任何事情?它是否拋出權限錯誤?什麼用戶是在下運行的PHP腳本?請提供更多信息。您可能還想嘗試執行'bash /home/scripts/fix-perm.sh'假定其爲bash腳本。 – IslandCow

+0

其沒有顯示任何東西 – NidhinRaj

回答

20

Shell exec需要一個字符串,它需要是一個實際的命令。您現在將它傳遞給一個文件路徑。這不會被解釋爲「在此路徑上執行文件」。你可以做幾件事情。

你需要做的是用程序調用文件。使用bash或sh調用它作爲評論所說:

echo shell_exec('sh /home/scripts/fix-perm.sh'); 

另一種選擇可能是:

$contents = file_get_contents('/home/scripts/fix-perm.sh'); 
echo shell_exec($contents); 

我認爲第一種選擇將是更好不過。

需要注意的是,執行外部程序的所有命令都需要實際的命令而不是文件路徑或其他內容。這適用於shell_exec,execpassthru等。

+0

我建議不要做。使文件可執行文件更清晰。 –

+0

我嘗試過,但它沒有顯示任何東西,它會返回任何結果?如何找到它的工作與否? – NidhinRaj

+0

shell_exec返回命令生成的輸出。如果你的腳本沒有輸出任何內容,將不會有輸出:) – hoppa