PHP中exec 函式執行系統命令失敗

2021-09-12 17:25:09 字數 1170 閱讀 4943

在php中,我們可以使用exec()來執行系統命令,但有時我們會遇到exec()命令執行不成功,或者無返回的情況,下面來說明一下:

exec ( string $command [, array &$output [, int &$return_var ]] ) : string

引數說明:

1.$command 要執行的命令

2.$output 執行結果

3.$return_var 若同時設定 $output 和此變數,命令執行後的返回狀態會被寫入到此變數

exec("ping www.baidu.com", $output);
正常來說執行結果會跟在伺服器上直接執行ping沒區別,但是由於某些原因會導致意外情況,下邊針對兩種情況作出說明,以及解決辦法

2.1 許可權問題

問題

當我們在伺服器上直接執行linux系統命令時(此處以ping為例),執行許可權取決於我們登陸使用者的許可權,如果我們登陸使用者為root,則執行ping的時候是用root來執行。但當我們在**上訪問的時候,我們此時的使用者為www,如果不修改ping的執行許可權的話,是無法執行成功的。
解決

修改ping或者對應命令的執行許可權
2.2 命令路徑問題

問題

還有一種情況,當我們用exec執行某個命令時,不報錯,也不返回結果,原因是此命令沒有在環境變數配置的目錄下即/etc/profile檔案中,以ifconfig為例,我們可以用whereis ifconfig,找出此命令具體路徑,比如路徑在/usr/sbin下,兩種解決辦法:
解決

1 複製命令到/usr/bin下,也就是環境變數下的目錄(不太推薦)

2 直接將命令全路徑補全exec('/usr/sbin',$output);(推薦)

3 在環境變數中增加目標目錄例如增加/usr/sbin到目錄

PHP中exec 函式執行系統命令失敗

在php中,我們可以使用exec 來執行系統命令,但有時我們會遇到exec 命令執行不成功,或者無返回的情況,下面來說明一下 exec string command array output int return var string 引數說明 1.command 要執行的命令 2.output 執...

PHP中exec 函式執行系統命令失敗

在php中,我們可以使用exec 來執行系統命令,但有時我們會遇到exec 命令執行不成功,或者無返回的情況,下面來說明一下 exec string command array output int return var string 引數說明 1.command 要執行的命令 2.output 執...

PHP中exec 函式執行系統命令失敗

在php中,我們可以使用exec 來執行系統命令,但有時我們會遇到exec 命令執行不成功,或者無返回的情況,下面來說明一下 exec string command array output int return var string 引數說明 1.command 要執行的命令 2.output 執...