摘要:但當(dāng)我們在網(wǎng)站上訪問的時候,我們此時的用戶為如果不修改的執(zhí)行權(quán)限的話,是無法執(zhí)行成功的。
0.說明
在php中,我們可以使用exec()來執(zhí)行系統(tǒng)命令,但有時我們會遇到exec()命令執(zhí)行不成功,或者無返回的情況,下面來說明一下:
1.函數(shù)exec ( string $command [, array &$output [, int &$return_var ]] ) : string 參數(shù)說明: 1.$command 要執(zhí)行的命令 2.$output 執(zhí)行結(jié)果 3.$return_var 若同時設(shè)置 $output 和此變量,命令執(zhí)行后的返回狀態(tài)會被寫入到此變量2.例子
exec("ping www.baidu.com", $output);
正常來說執(zhí)行結(jié)果會跟在服務(wù)器上直接執(zhí)行ping沒區(qū)別,但是由于某些原因會導(dǎo)致意外情況,下邊針對兩種情況作出說明,以及解決辦法
問題
當(dāng)我們在服務(wù)器上直接執(zhí)行l(wèi)inux系統(tǒng)命令時(此處以ping為例),執(zhí)行權(quán)限取決于我們登陸用戶的權(quán)限,如果我們登陸用戶為root ,則執(zhí)行ping的時候是用root來執(zhí)行。但當(dāng)我們在網(wǎng)站上訪問的時候,我們此時的用戶為www,如果不修改ping的執(zhí)行權(quán)限的話,是無法執(zhí)行成功的。
解決
修改ping或者對應(yīng)命令的執(zhí)行權(quán)限
問題
還有一種情況,當(dāng)我們用exec執(zhí)行某個命令時,不報錯,也不返回結(jié)果,原因是此命令沒有在環(huán)境變量配置的目錄下即/etc/profile文件中,以ifconfig為例,我們可以用whereis ifconfig,找出此命令具體路徑,比如路徑在/usr/sbin下,兩種解決辦法:
解決
1 復(fù)制命令到/usr/bin下,也就是環(huán)境變量下的目錄(不太推薦)
2 直接將命令全路徑補全exec("/usr/sbin",$output);(推薦)
3 在環(huán)境變量中增加目標目錄例如增加/usr/sbin到目錄
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30082.html
摘要:一執(zhí)行系統(tǒng)外部命令輸出并返回最后一行結(jié)果。相同點都可以獲得命令執(zhí)行的狀態(tài)碼用提供的專門函數(shù)提供共了個專門的執(zhí)行外部命令的函數(shù),,。第二個參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼。 php高級語法總結(jié)。 一、執(zhí)行系統(tǒng)外部命令 system() 輸出并返回最后一行shell結(jié)果。 exec() 不輸出結(jié)果,返回最后一行shell結(jié)果,所有結(jié)果可以保存到一個返回的數(shù)組里面。 pass...
閱讀 950·2021-11-22 12:09
閱讀 3715·2021-09-27 13:36
閱讀 1408·2021-08-20 09:37
閱讀 4030·2019-12-27 12:22
閱讀 2367·2019-08-30 15:55
閱讀 2373·2019-08-30 13:16
閱讀 2832·2019-08-26 17:06
閱讀 3443·2019-08-23 18:32