一、为了可以通过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:这样配置服务器很不安全,还是需要寻求更安全的方法