允许php使用sudo权限运行shell脚本

允许php使用sudo权限运行shell脚本

当我执行简单的 shell_exec('./script.sh'); 时,命令 php -v 正在工作,但是当我使用 sudo 时它不起作用,没有 sudo service stop 命令则不起作用。

var_dump(shell_exec('sudo bash ./script.sh'));此命令返回

sudo:没有 tty 存在并且没有指定 askpass 程序

脚本

#!/bin/bash
php -v 

sudo service  apache2 stop

命令.php

<?php

echo shell_exec('./script.sh');
echo shell_exec('sudo bash ./script.sh');  # not working
?>

ls-la

-rwxr-xr-x  1 www-data root    68 Jun 15 02:24 script.sh

**/etc/sudoers**

sudo visudo

apache  ALL=(ALL) NOPASSWD: /bin/bash /var/www/html/script.sh *
www-data  ALL=(ALL) NOPASSWD: /bin/bash /var/www/html/script.sh *

操作系统

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic

答案1

从命令提示符运行

sudo visudo

然后转到文件的最后一行并添加以下行:

%www-data ALL=NOPASSWD: <Your-Command-Here>

希望这可以帮助!

相关内容