[ PHP ] – shell_exec() show error message and how to fix error message:sudo no tty present and no askpass program specified

最近常需要用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

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

!去下營經續永站本助幫能就下一點輕輕,話的您到助幫有章文的我果如 如果我的文章有幫助到您的話,輕輕點一下就能幫助本站永續經營下去!

發佈留言

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