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中替换键名的简易方法示例详解
Jan 07 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
PHP二维数组去重算法
Dec 17 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
php基于协程实现异步的方法分析
Jul 17 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 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
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
Python字符串替换实例分析
2015/05/11 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
大学生预备党员自我评价分享
2013/11/16 职场文书
上课说话检讨书大全
2014/01/22 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
教师现实表现材料
2014/02/14 职场文书
文明村镇申报材料
2014/05/06 职场文书
天地会口号
2014/06/17 职场文书
经营场所使用证明
2015/06/19 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
详解Java实践之建造者模式
2021/06/18 Java/Android
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL