当我执行简单的 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>
希望这可以帮助!