在linux环境下部署php网站的时候报如下错误:
Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/.....) is not within the allowed path(s): (/www/wwwroot/..../:/tmp/:/proc/) in /www/wwwroot/..../index.php on line 20
Warning: require(/www/wwwroot/......): failed to open stream: Operation not permitted in /www/wwwroot/....... on line 16
Fatal error: require(): Failed opening required '/www/wwwroot/......' (include_path='.:/www/server/php/72/lib/php') in /www/wwwroot/..... on line 16
出现此类错误往往是因为 php open_basedir 配置的问题,PHP不能引入其授权目录上级及其以上的文件;
分享以下4种解决 open_basedir 错误的方法:
1、php.ini 修改方法
把权限作用域由入口文件目录修改为网站目录
打开 php.ini 搜索 open_basedir 把
open_basedir = "/home/wwwroot/feishuai.vip/web/:/tmp/:/var/tmp/:/proc/"
改为
open_basedir = "/home/wwwroot/feishuai.vip/:/tmp/:/var/tmp/:/proc/"
注意:
如果你的 php.ini 文件的 open_basedir 设置选项是被注释的或者为 none,那么你需要通过 Apache 或者 Nginx 来修改> php.ini 文件通常是在 /usr/local/php/etc 目录中,当然了这取决于你 LAMP 环境配置。
2、Apache 修改方法
打开 你的域名.conf 文件 搜索 open_basedir 把
php_admin_value open_basedir "/home/wwwroot/feishuai.vip/web/:/tmp/:/var/tmp/:/proc/"
改为
php_admin_value open_basedir "/home/wwwroot/feishuai.vip/:/tmp/:/var/tmp/:/proc/"
重启 apache 生效
> 域名.conf 文件通常是在 /usr/local/apache/conf 目录中,当然了这取决于你 LAMP 环境配置
3、Nginx/Tengine 修改方法
打开 你的域名.conf 文件 搜索 open_basedir 把
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/feishuai.vip/web/:/tmp/:/proc/";
改为
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/feishuai.vip/:/tmp/:/proc/";
重启 Nginx 生效
> 域名.conf 文件通常是在 /usr/local/nginx/conf/vhost 目录中,当然了这取决于你 LNMP/LTMP 环境配置
4、fpm/fastcgi user.ini 方法
打开 项目根目录,找到 user.ini 文件,搜索 open_basedir 把
open_basedir=/home/wwwroot/feishuai.vip/web/:/tmp/:/proc/
改为
open_basedir=/home/wwwroot/feishuai.vip/:/tmp/:/proc/
重启 web 服务器 生效
如果是宝塔面板出现“open_basedir restriction in effect. ”,只需要在相应的网站目录,勾选掉防跨站攻击(open_basedir)即可!
编程笔记 » Linux环境 require(): open_basedir restriction in effect 错误