【发布时间】:2021-10-10 09:53:25
【问题描述】:
我有一个脚本,我想从我的 PHP 代码中调用它。以下是我的脚本文件:
listwifi.sh
sudo iwlist wlp1s0 scan | grep SSID
为此,我还使用sudo chmod +x listwifi.sh 授予了可执行权限
我在我的 sudoers 文件末尾添加了以下内容(使用 visudo):
apache ALL = NOPASSWD: /var/www/html/mypath/osscripts/listwifi.sh *
www-data ALL = NOPASSWD: /var/www/html/mypath/osscripts/listwifi.sh *
我也尝试过:
apache ALL = NOPASSWD: /usr/bin /var/www/html/mypath/osscripts/listwifi.sh *
www-data ALL = NOPASSWD: /usr/bin /var/www/html/mypath/osscripts/listwifi.sh *
我正在使用以下 PHP 代码来调用此文件:
exec(getenv('BASE_DIR') . "/osscripts/listwifi.sh", $output);
var_dump($output);
但我不断收到以下错误:
sudo:需要终端才能读取密码;使用 -S 选项从标准输入读取或配置 askpass 帮助器
如何让 PHP 以 root 身份执行此文件而无需输入密码?
【问题讨论】:
-
把
sudo从脚本中取出,将脚本调用为sudo /var/www/html/mypath/osscripts/listwifi.sh -
@sabik 谢谢 :) 那行得通。您能否解释一下这与在脚本中使用 sudo 有何不同?
-
sudoers配置用于通过sudo调用的命令,而不是从它调用的位置... -
@sabik 谢谢。你能把它作为答案,以便我可以将其标记为已关闭吗?