先小說兩句:今天研究了下PHP調用LINUX命令的功能,一開始怎麼作都調用不成功,試了很久才終於成功了,因此發出來分享一下。下面我將詳細介紹:
PHP中提供了幾個調用linux命令的函數,exec、system、passthru,函數使用請參考手冊,這裏不具體介紹。下面我以exec函數爲例具體介紹:
好比LINUX中修改服務器時間命令是 /bin/date -s '2010-05-28 13:10',咱們經過php函數exec調用這個命令執行修改時間exec("sudo /bin/date -s '2010-05-28 13:10'",$out,$status);其中$out是輸出值,$status是返回值0或1,若是返回0則執行成功,返回1則執行失敗。要經過PHP成功執行這個命令(PHP運行用戶非root)須要檢查如下幾點:
一、首先查看php運行用戶,能夠在web服務器配置文件中查看,或者運行
<?php echo shell_exec("id -a");?>
直接查看。好比個人運行用戶是www,編輯/etc/sudoers文件
首先加上www用戶 www ALL=(ALL) NOPASSWD:ALL
這表示www用戶運行的時候不用輸入密碼。接着看圖片註釋掉前面兩個,刪除圈着的環境變量LS_COLORS,其中Ubuntu中是沒有這幾個的,這一步可省略,其餘Redhat、Fedora、Centos這幾個都是須要這麼作的。
二、查看php.ini中配置是否打開安全模式,主要是如下三個地方
safe_mode = (這個若是爲off下面兩個就不用管了)
disable_functions =
safe_mode_exec_dir=
OVER,下面你就能夠用exec調用linux命令執行了。