我正在尝试通过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个权限。 Ownew of 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
有什么想法吗?
答案 0 :(得分:0)
溶液:
将restart.php更改为
$out= @shell_exec("sudo /var/www/killengine.sh");