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 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
MYSQL环境变量设置方法
Jan 15 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php 使用post,get的一种简洁方式
Apr 25 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
php实现文章置顶功能的方法
Oct 20 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
PHP实现简单计算器小程序
Aug 28 PHP
php intval函数用法总结
Apr 14 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
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
python统计中文字符数量的两种方法
2019/01/31 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
化学专业毕业生求职信
2014/07/28 职场文书
工作自我评价范文
2015/03/05 职场文书
欠条格式范本
2015/07/03 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
vue 自定义组件添加原生事件
2022/04/21 Vue.js