首页 > 闲情逸致 > 工作小结
收藏

LNMP环境报错require(): open_basedir restriction in effect...

08/26 14:38
大潇博客 原创文章,转载请标明出处

今天使用ci3做的项目上传到服务器后,报了这样的错:Warning: require(): open_basedir restriction in effect. File(******) is not within the allowed path(s): (******) in...


网上查阅了挺多资料,大概明确了是php open_basedir 配置的问题,服务器为了安全才做了限制,PHP不能引入其授权目录上级及其以上的文件。


其实网上的说法还是挺多的,有的说需要给错误提示中的文件夹权限,有的说要修改php.ini中的open_basedir配置,有的说要修改nginx的某些配置......很容易把人搞乱。


我的解决方法:

大多数情况下,php.ini 文件的 open_basedir 设置选项是被注释的或者为 none,所以我们不需要修改php的配置文件


Nginx 需要修改 nginx.conf 或者 conf/vhost 目录下 你的域名.conf 文件,如果你的生成环境是 LNMP/LTMP 一键安装包配置那么多半就是直接修改 你的域名.conf 文件


打开.conf配置文件,搜索open_basedir,若配置文件中有此信息,则在其后面加入错误提示中的路径。


若.conf配置文件中,没有此信息,就在配置文件的php段落中加入:fastcgi_param  PHP_VALUE  "open_basedir=错误信息中的路径";


然后重新启动 Nginx 即可生效


注意:上面我们修改的时候用的是绝对地址,但是也可以这样直接去找网站根目录(如果你这样配置,你一定要懂不同项目有不同根目录的原理,否则也是行不通的。):


fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

上面这行代码拿thinkphp来讲,如果你根目录是public,那么$document_root就会指到public;


依然会生成错误的配置如下:fastcgi_param  PHP_VALUE  "open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/";


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311