在php shell_exec函数中运行killall命令

时间:2013-12-14 07:39:40

标签: php centos shell-exec

我有一个工作的shell脚本,使用killall来杀死程序的所有实例,如下所示:

killall abc

现在,我编写了一个php网页,使用shell_exec函数执行此脚本:

shell_exec('sh ./myscript.sh');

问题是我的php代码在命令行上使用“php myscript.php”正常工作,但在浏览器中不起作用!但是,我知道命令行中的用户是“root”,而php中的用户是“apache”(我用'whoami'得到这个)。 Linux发行版是使用SElinux的Centos 6。我把selinux的状态改为宽容。

我检查过的事情:

  • PHP safe_mode已关闭
  • shell_exec()在php.ini
  • 中的disable_functions中不存在

有没有办法使用php使用kill命令运行脚本?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你要么必须以root身份运行apache(不安全),要么更安全,你必须运行你试图杀死的命令为'apache',或者配置你的sudoers文件以授予对killall命令的apache权限:

# vim /etc/sudoers
apache localhost=(ALL) NOPASSWD:/usr/bin/killall

然后将myscript.sh更改为sudo killall abc