Linux+Nginx/Apache下的PHP exec函数执行Linux命令

1、php.ini配置文件

打开PHP的配置文件,里面有一行 disable_function 的值,此处记录了禁止运行的函数,在里面将exec和shell_exec、system等函数删除。

2、权限问题

修改以后PHP可以运行部分命令了,但是部分外部程序和命令仍然不能运行。使用sudo返回失败。

运行:whoami 查看,Linux环境下php-fpm的运行角色是www。

修改sudoers文件

vi /etc/sudoers 

将www添加到文件中

## Allow root to run any commands anywhere
root ALL=(ALL) ALL

下面:

www ALL=(ALL) NOPASSWD:ALL

然后找到 Default requiretty 这一行,将其注释掉

# Default requiretty

ps:意思是 sudo 默认需要tty终端,注释掉就可以在后台执行了。

重启php-fpm、Nginx/Apache,这样PHP就可以在需要执行外部命令的时候使用sudo利用root的身份执行命令,而不会报错或者执行失败了。

猜你喜欢

转载自www.cnblogs.com/xi-jie/p/12968965.html