PHP sudo: 需要一个终端来读取密码

PHP sudo: a terminal is required to read the password

我有一个脚本,我想从我的 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: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper

如何让 PHP 以 root 身份执行此文件而无需输入密码?

从脚本中取出 sudo 并将脚本调用为

sudo /var/www/html/mypath/osscripts/listwifi.sh

sudoers 配置是针对通过 sudo 调用的命令,而不是从...

调用的命令