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下使用strpos需要注意 === 运算符
Jul 17 PHP
php URL跳转代码 减少外链
Jun 25 PHP
php header Content-Type类型小结
Jul 03 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
php数组一对一替换实现代码
Aug 31 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
PHP实现微信申请退款功能
Oct 01 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
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
Python爬虫工程师面试问题总结
2018/03/22 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
股东协议书
2014/04/14 职场文书
倡议书格式
2014/04/14 职场文书
检讨书范文
2015/01/27 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫