[ 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

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

⇩⇩⇩!謝感,去下營經續繼費經夠足有才告廣擊點人五有要需少最天一,告廣擊點我幫請,話的您到助幫有章文的我果如 如果我的文章有幫助到您的話,請幫我點擊廣告,一天最少需要有五人點擊廣告才有足夠經費繼續經營下去,感謝! ⇧⇧⇧

發佈留言

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