如何使用PHP來執行shell文件?使用PHP從bash腳本獲取返回值
我有一個名爲sync.sh的文件,所以如何在php中運行該文件以及如何在完成執行後採取響應?我認爲shell_exec()
將有助於觸發文件,但我怎樣才能得到腳本正確完成任務的響應?
如何使用PHP來執行shell文件?使用PHP從bash腳本獲取返回值
我有一個名爲sync.sh的文件,所以如何在php中運行該文件以及如何在完成執行後採取響應?我認爲shell_exec()
將有助於觸發文件,但我怎樣才能得到腳本正確完成任務的響應?
返回值
從被執行的命令或NULL的輸出是否發生了錯誤。
只是得到該函數的返回值。
$result = shell_exec('sync.sh');
而$result
將包含你想要的。
看看exec()函數。你可以傳遞一個return_var來保存shell腳本中的退出代碼。
$out = array();
$status = -1;
exec('/path/to/sync.sh', $out, $status);
if ($status != 0) {
// shell script indicated an error return
}
有一點要注意的是,腳本與Web服務器的權限運行,而不是你自己的用戶。
此外,一定要注意將文檔的安全性相關的警告:
當允許用戶提供的數據將被傳遞給這個函數,使用 escapeshellarg()或escapeshellcmd()將確保用戶不能詭計 該系統執行任意指令。
這給我錯誤126.我想我需要管理員權限來運行該命令,而且我的腳本位於/ home/administrator /腳本此路徑。我認爲web服務器沒有授予訪問/ var/www文件夾以外的權限。這樣對嗎? – 2011-12-30 08:22:24
@SubhojitMukherjee您是否在腳本上設置了權限,以便Web服務器可以運行它? (例如「chmod o + rx sync.sh」)。從用戶帳戶運行腳本時腳本是否工作? – nsanders 2011-12-30 08:27:55
試試'sh sync.sh'。這不需要sync.sh是可執行的。 – Ikke 2011-12-30 10:56:53
問題是,我的同步文件位於/ home/administrator/scripts,因此該命令將訪問外部www文件夾? – 2011-12-30 07:53:07
@SubhojitMukherjee這取決於如何設置PHP,但通常情況下,這是可能的。只要給腳本的絕對路徑。 – Ikke 2011-12-30 08:01:42