我正在尝试通过 php 脚本执行 pkill 命令。
killengine.sh 脚本从终端运行良好,包括 ./killengine.sh 和 php restart.php。
这是killengine.sh
#!/bin/bash
sudo pkill -f engine
这是restart.php
$out = shell_exec("/var/www/killengine.sh 2>&1");
var_dump($out);
这两个文件都有 755 权限。restart.php 的所有者是apache,root 是killengine.sh 的所有者。我还尝试让两个所有者都成为 root/apache。
在 visudo 我做了这个改变:
Defaults:apache !requiretty
但我得到:“sudo:没有 tty 存在,也没有指定 askpass 程序”
然后我尝试了
Defaults!/var/www/killengine.sh !requiretty
然后我得到:“sudo:对不起,你必须有一个 tty 才能运行 sudo”
此外,这条线一直出现在 EOF
apache ALL=NOPASSWD: /var/www/killengine.sh
但没有成功。
操作系统是 Centos 6
有任何想法吗?