php访问目录权限设置

ThinkPhp 发表时间:2019-02-17 22:48:30 作者:梁子亮 浏览次数:725

由于项目目录在'/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