由于项目目录在'/home/wwwroot/tim/'文件夹下,php访问"/home/wwwroot/"目录权限报错如下
file_get_contents(): open_basedir restriction in effect. File(/home/wwwroot/nginx_rewrite2.conf) is not within the allowed path(s): (/home/wwwroot/tim/public/../../)
原因是php没有访问此个目录的权限。
可以先查看一下php.ini有没有开启open_basedir
vim /usr/local/php/etc/php.ini
如果;open_basedir =前面有分号,则表示没有开启,所以直接修改fastcgi.conf或者项目配置文件tim.conf即可
解决方案1:
进入/usr/local/nginx/conf
cd /usr/local/nginx/conf
修改fastcgi.conf
vim fastcgi.conf
修改最后面一句,设置为对应的需要访问的目录即可
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../../";
最后重启nginx服务(注意不是重启php-fpm服务)
service nginx restart
解决方案2:
进入/usr/local/nginx/conf
cd /usr/local/nginx/conf
修改fastcgi.conf
vim fastcgi.conf
删除掉最后面一句:fastcgi_param PHP_ADMIN_VALUE "open_basedir.....
然后进入/usr/local/nginx/conf/vhost
cd /usr/local/nginx/conf/vhost
vim tim.conf
在最底部添加一句(注意:需要server{}的括号外面,即最底部添加即可)
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/";
最后重启nginx服务(注意不是重启php-fpm服务)
service nginx restart
以上方案1和方案2均会有可能产生其他异常,如session_start失效等,暂未解决...
解决方案3:
修改fastcgi文件
vim /usr/local/nginx/conf/fastcgi.conf
把最底部的这句
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
更改为这样
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";
重启nginx
service nginx restart