有个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