1. Home
  2. /
  3. Web technology
  4. /
  5. PHP
  6. /
  7. [ PHP ] –...

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

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 1,平均評等: 5]

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

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

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 1,平均評等: 5]

發佈留言

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