通过php

时间:2018-02-27 14:14:12

标签: php shell-exec visudo

我正在尝试通过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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

溶液:

将restart.php更改为

$out= @shell_exec("sudo /var/www/killengine.sh");