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.ini 中文版
Oct 28 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
php+xml编程之xpath的应用实例
Jan 24 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
Jul 01 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
Feb 04 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
php数据访问之查询关键字
2016/05/09 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
某公司面试题
2012/03/05 面试题
项目合作计划书
2014/01/09 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
关于python爬虫应用urllib库作用分析
2021/09/04 Python
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL