open_basedir restriction in effect. 原因与解决方法


Posted in PHP onMarch 14, 2021

 

在linux服务器部署thinkphp5的时候PHP报了这个错误,如下:

Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/zhuyuyun/thinkphp/start.php) is not within the allowed path(s): (/www/wwwroot/zhuyuyun/public/:/tmp/:/proc/) in /www/wwwroot/zhuyuyun/public/index.php on line 20
Warning: require(/www/wwwroot/zhuyuyun/thinkphp/start.php): failed to open stream: Operation not permitted in /www/wwwroot/zhuyuyun/public/index.php on line 20
Fatal error: require(): Failed opening required '/www/wwwroot/zhuyuyun/public/../thinkphp/start.php' (include_path='.:/www/server/php/56/lib/php') in /www/wwwroot/zhuyuyun/public/index.php on line 20

或者报如下类似:

Warning: include_once(): open_basedir restriction in effect. File(../../staticpayb/WxPay.Config) is not within the allowed path(s):

出现问题的原因:

查看问题描述以及资料,发现是php open_basedir 配置的问题,PHP不能引入其授权目录上级及其以上的文件;

一般情况下是不会出现这种问题的,之所以出现这个问题绝大多数情况是由于服务器的原因,为了安全才做了这样的限制!

解决方法:

我首先要申明的是,下面的方法适合所有类似PHP报“open_basedir restriction in effect”错误的项目,并不仅仅只是适合thinkphp5的人。只要你的PHP报此错误都可以得到解决。

一、php.ini 修改方法

把权限作用域由入口文件目录修改为框架根目录

 

打开 php.ini 搜索 open_basedir,把

open_basedir = "/home/wwwroot/tp5/public/:/tmp/:/var/tmp/:/proc/"

修改为

open_basedir = "/home/wwwroot/tp5/:/tmp/:/var/tmp/:/proc/"

注意:

如果你的 php.ini 文件的 open_basedir 设置选项是被注释的或者为 none,那么你需要通过 Apache 或者 Nginx 来修改> php.ini 文件通常是在 /usr/local/php/etc 目录中,当然了这取决于你 LAMP 环境配置。

 

二、Apache 修改方法

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

apache
├─vhost
    ├─www.thinkphp.cn.conf 
    ├─......
├─httpd.conf

打开 你的域名.conf 文件 搜索 open_basedir,把

php_admin_value open_basedir "/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/var/tmp/:/proc/"
php_admin_value open_basedir "/home/wwwroot/www.thinkphp.cn/:/tmp/:/var/tmp/:/proc/"

然后重新启动 apache 即可生效

> 域名.conf 文件通常是在 /usr/local/apache/conf 目录中,当然了这取决于你 LAMP 环境配置

 

三、Nginx/Tengine 修改方法

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

nginx
├─conf
    ├─vhost
        ├─www.thinkphp.cn.conf
    ├─nginx.conf
    ├─......
├─nginx.conf

打开 你的域名.conf 文件 搜索 open_basedir,把

fastcgi_param  PHP_VALUE  "open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/";

修改为

fastcgi_param  PHP_VALUE  "open_basedir=/home/wwwroot/www.thinkphp.cn/:/tmp/:/proc/";

然后重新启动 Nginx 即可生效

域名.conf 文件通常是在 /usr/local/nginx/conf/vhost 目录中,当然了这取决于你 LNMP/LTMP 环境配置

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

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
fastcgi_param  PHP_VALUE  "open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/";

四、fpm/fastcgi user.ini 修改方法

打开 项目根目录下找到 user.ini 文件,搜索 open_basedir,把

open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/

修改为

然后重新启动 web 服务器 即可生效!

 

总结:

一定要仔细读此篇文章,否则你会选错适合你的方法。

一定要根据自己的服务器环境来选择你的修改方法。

PHP 相关文章推荐
基于PHP+MySQL的聊天室设计
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
smarty的保留变量问题
Oct 23 PHP
PHP Pear 安装及使用
Mar 19 PHP
php db类库进行数据库操作
Mar 19 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
Symfony2联合查询实现方法
Mar 18 PHP
Laravel中间件实现原理详解
Oct 09 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 #PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 #PHP
imagettftext() 失效,不起作用
Mar 09 #PHP
PHP高并发和大流量解决方案整理
Mar 09 #PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 #PHP
PHP 出现 http500 错误的解决方法
Mar 09 #PHP
PHP 实现链式操作
Mar 09 #PHP
You might like
ie6 动态缩略图不显示的原因
2009/06/21 PHP
php设计模式 Proxy (代理模式)
2011/06/26 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP中串行化用法示例
2016/11/16 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
py-charm延长试用期限实例
2019/12/22 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
python脚本定时发送邮件
2020/12/22 Python
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
上学迟到的检讨书
2014/01/11 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
个人收入证明范本
2015/06/12 职场文书
在职证明范本
2015/06/15 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
社区干部培训心得体会
2016/01/06 职场文书