解決 PHP (Apache 用戶) 執行需 root 權限的 Linux 指令問題,透過 visudo 設定免密 sudo 與指令白名單。
exec("sudo /usr/local/yourcmd/sbin/yourcmd -t -f {$conf_file}", $out);
// 回傳:Array ( [0] => sudo: no tty present and no askpass program specified )
visudo 編輯 sudoersDefaults requiretty(允許無 tty 環境執行 sudo)apache ALL=(ALL) NOPASSWD: ALL
Cmnd_Alias YOURCMD = /usr/local/yourcmd/sbin/yourcmd
exec("sudo /usr/local/yourcmd/sbin/yourcmd -t -f {$conf_file}", $out) 成功回傳指令輸出NOPASSWD: ALL 暴露風險cap_net_bind_service)