最近常需要用php去呼叫shell script, 在command line 執行是沒問題的,但用shell_exec()去呼叫一直失敗,直接用var_dump回的也只是null,後來查一下才知回null是正常的因為我沒有拋出shell script的錯誤訊息。

舉例:我要呼叫某隻 abc.sh
echo shell_exec(‘sudo abc.sh’);
顯示結果 NULL

echo shell_exec(‘sudo abc.sh 2>&1’);
顯示結果 sudo no tty present and no askpass program specified
喔喔!執行程式需要輸入密碼

解法透過免輸入密碼來解決:
指令:sudo visudo

加入以下內容
apache ALL=(ALL) NOPASSWD: /bin/sh, /home/jeff/w.sh
www-data ALL=(ALL) NOPASSWD: /bin/sh, /home/jeff/w.sh

註:每個參數中間 以一個空白 隔開即可

喜歡我的文章嗎?歡迎按讚加分享/留言交流,或是點擊下方廣告讚助我喝一杯咖啡吧 ^_^ ⇩⇩⇩

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *