apache调用php执行系统命令

一、为了可以通过apache调用php执行系统命令,需要首先赋予apache用户超级用户权限

赋予用户超级用户权限的方法

在/etc/sudoers中添加

apache ALL=(ALL) NOPASSWD: ALL

注:1、由于通过apache执行命令不通过tty,所以需要注释掉/etc/sudoers文件中的Defaults requiretty这行

否则会出现sudo: sorry, you must have a tty to run sudo的错误

2、修改完sudoers文件要确保该文件权限为440,否则会报错误

sudo: no valid sudoers sources found, quitting

添加一个例子

<?php echo exec('/usr/bin/sudo /usr/bin/whoami 2>&1'); ?>

如果上面执行完成,用浏览器调用php页面报出错误

unable to change to sudoers gid: Operation not permitted

那么可能需要关闭selinux

二、关闭selinux的方法如下

1 永久方法 – 需要重启服务器

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

2 临时方法 – 设置系统参数

使用命令setenforce 0

附:

setenforce 1 设置SELinux 成为enforcing模式

setenforce 0 设置SELinux 成为permissive模式

ps:这样配置服务器很不安全,还是需要寻求更安全的方法