2016-05-03 206 views
0

如何從PHP或HTML執行shell腳本文件。 sh文件位於localhost目錄之外,還有許多其他sh文件由第一個sh文件啓動。如何從php/html執行shell腳本?

說本地主機目錄是 /opt/lampp/htdocs/xampp/test 並且sh文件的位置是/home/user/scripts/run.sh

run.sh將從/opt/lampp/htdocs/xampp/test/upload上傳的一些文件複製到/home/user/scripts/file並執行一些其他.sh文件。

我試過很多方法,PHP沒有成功 像

<?php $output = shell_exec('sh /home/user/script/run.sh'); echo "$output"; ?> 

<?php 
shell_exec("/home/user/server/run.sh"); 
?> 

,但沒有運氣。 我無法將sh文件放在CGI目錄中,因爲它依賴於其他腳本和文件。如何從當前呈現的目錄運行腳本。

+0

你試圖執行shell腳本之前,改變在PHP工作目錄,通過使用CHDIR( 「/ home/user中/腳本/」)或了shell_exec(「CD/home/user/script/sh /home/user/script/run.sh')? – gmfm

+0

不工作它沒有執行任何操作。 – anonymous

回答

0

這很可能是您沒有任何環境變量設置爲從php執行腳本的用戶。這可能是用戶名組apache:apache。您應該爲PATH設置一些環境變量,以便知道可執行文件的位置。你可以或者指向sh/usr/bin/sh

<?php $output = shell_exec('/usr/bin/sh /home/user/script/run.sh'); echo "$output"; ?>

或登錄到服務器並echo $PATH。然後複製粘貼到putenv功能:

putenv('PATH={your_paths}'); 
$output = shell_exec('sh /home/user/script/run.sh'); echo "$output"; 
+0

我將變量設置爲putenv,但它只執行run.sh中的echo命令,但run.sh有鏈接來運行其他bash腳本(使用./而不使用sh,因爲sh不適用於該文件)但那是不執行 – anonymous

+0

太好了,所以你現在就執行它。現在,它是關於找出你在bash腳本中的相對路徑:http://unix.stackexchange.com/questions/17717/refer-to-a-file-under-the-same-directory-of-a-script-found-在路徑中,你可能正在處理在你的bash和apache中調用腳本的相對路徑,調用run.sh腳本,不知道它們在哪裏。我認爲我的回答可以回答你的問題,你現在有一個執行腳本。 – DataHerder