Ubuntu下Nginx中PHP调用Linux命令

有个Python脚本需要通过PHP调用,PHP运行在Ubuntu下的Nginx服务器上。

首先查看php运行用户,可以在web服务器配置文件中查看,或者运行<?php echo shell_exec("id -a");?>查看。

也可以通过phpinfo()函数进行查看。

我的PHP运行用户是www,不过不同系统和不同服务器都不一样。

然后编辑/etc/sudoers文件vi /etc/sudoers。

首先加上www用户  www ALL=(ALL)   NOPASSWD:ALL。

第一个ALL代表网络中的主机,第二个括号里面的ALL代表目标用户,表示以谁的身份去执行命令,最后一个ALL代表的是可执行的命令名(可以指定你想要该用户能够执行的命令)。其中NOPASSWD表示不用输入密码。

然后查看php.ini中配置是否打开安全模式。打开php安装路径,打开php.ini文件检查:

safe_mode = Off

disble_function=phpinfo,passthru,exec,system,popen,escapeshellcmd,escapeshellarg,shell_exec

safe_mode_exec_dir=

把你想开启的函数删掉,保存php.ini文件。

更改php.ini后需要重启php-fcgi。如下命令:

/etc/init.d/php-fpm restart 或者
restart php-fpm 或者
service php-fpm restart 或者
service php5-fpm restart

最后可以重启一遍Nginx:/usr/nginx/sbin/nginx -s reload

发表评论

电子邮件地址不会被公开。 必填项已用*标注