-1

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

有任何想法吗?

4

1 回答 1

0

解决方案:

将 restart.php 更改为

$out= @shell_exec("sudo /var/www/killengine.sh");
于 2018-02-27T14:59:22.637 回答