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 类型转换函数intval
Jun 20 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
PHP实现的购物车类实例
Jun 17 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
php7 错误处理机制修改实例分析
May 25 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
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
php邮件发送的两种方式
2020/04/28 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python文件的md5加密方法
2016/04/06 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Django模板语言 Tags使用详解
2019/09/09 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
华为C++笔试题
2014/08/05 面试题
房产公证书范本
2014/04/10 职场文书
护理学专业求职信
2014/06/29 职场文书
机关作风建设工作总结
2014/10/23 职场文书
项目经理岗位职责范本
2015/04/01 职场文书