付费节点推荐
免费节点
节点使用教程
本打算今晚早点睡,却不想被这个问题给弄到一点多了。问题是这样的:大陆的家用网络访问github,是非常慢的。下载源码更是不方便。所以我的做法是去服务器 wget下来,再传回到本地。经测试,服务器(大陆或者国外)下载速度没限制。但是每次登陆服务器下载还是比较麻烦。所以想做一个web页面,只要输入地址执行,后端调用系统命令执行下载任务。最后返回下载url即可。但是测试发现返回结果都是空。
这里遇到的问题主要还是权限。
问题解决如下:
1.首先我们得去php.ini 开启 exec的权限:
#首先查找php.ini所在的位置
[root@instance-rh1f8o1o default]# find / -name php.ini
/usr/local/php/etc/php.ini
[root@instance-rh1f8o1o default]#
编辑 php.ini,找到
disable_functions = passthru,system,chroot,chgrp,chown,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
我们将exec,shell_exec 去掉。
别忘了重启php-fpm 和nginx
2.查看nginx的当前用户是谁,发现是 www
[root@instance-rh1f8o1o default]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 655 root 6u IPv4 1047840 0t0 TCP *:http (LISTEN)
nginx 656 www 6u IPv4 1047840 0t0 TCP *:http (LISTEN)
nginx 657 www 6u IPv4 1047840 0t0 TCP *:http (LISTEN)
bcm-agent 1420 root 9u IPv4 1074573 0t0 TCP instance-rh1f8o1o:49810->100.67.96.39:http (ESTABLISHED)
bcm-agent 1420 root 11u IPv4 1074475 0t0 TCP instance-rh1f8o1o:49794->100.67.96.39:http (ESTABLISHED)
[root@instance-rh1f8o1o default]#
然后我们需要将www增加root权限。方法如下:
## 编辑sudoers文件,找到这里,在root下方增加一行
www ALL=(ALL) NOPASSWD:ALL
[root@instance-rh1f8o1o default]# vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
www ALL=(ALL) NOPASSWD:ALL
这里注意,sudoers文件是只读的。所以编辑之前,我们需要给个可写权限
chmod 666 /etc/sudoers
到这里基本没啥问题了,如果你想使用wget命令,别忘记了,给项目目录及文件增加权限。如下:
[root@instance-rh1f8o1o default]# cd /home/wwwroot/default/
[root@instance-rh1f8o1o default]# ls
lnmp.gif ocp.php phpinfo.php phpmyadmin p.php wget
[root@instance-rh1f8o1o default]# chmod 777 -R wget/
[root@instance-rh1f8o1o default]#
以下是我的测试代码
$cmd = 'wget -P /home/wwwroot/default/wget/ https://github.com/threadshare/php/archive/master.zip';
$get = shell_exec($cmd);
var_dump($get);
$text = shell_exec("ls -l");
echo '====='.$text;
未经允许不得转载:Bcoder资源网 » php shell_exec遇到的一些坑
评论前必须登录!
登陆 注册