在php中使用 exec/ system/passthru/shell_exec 爬過的坑
阿新 • • 發佈:2018-11-13
問題描述:
在命令列中執行一個php/py檔案,沒有問題。
當在php框架中用exec等函式呼叫外部命令時,發現怎麼也得不到想要的內容,各種奇葩返回。
解決過程:
經檢視,執行php時使用者為www-data,許可權過低,無法操作。
public function testtest(){
echo exec('whoami');die;
}
www-data是預設執行web服務的使用者/組,一般在通過apt安裝web服務程式時生成。搭建web服務的資料夾/檔案一般要設定成www-data的。
解決方法:
1.sudo su 切換到root
2.chmod u+w /etc/sudoers 賦予/etc/sudoers檔案可寫許可權
3.vim /etc/sudoers 編輯sudoers檔案
root ALL=(ALL:ALL) ALL
www-data ALL=(ALL) NOPASSWD:ALL
4.chmod u-w /etc/sudoers 去除/etc/sudoers檔案可寫許可權