关于Laravel报错require:open_basedir restriction in effect的解决方案记录

作者:二三   2020-03-29 14:07:47   539


当今天打开Linux服务器上部署的Laravel项目(逆光导航)时出现了如下报错:

Warning: require(): open_basedir restriction in effect. File(/www/admin/nav.mhbdng.cn_80/wwwroot/vendor/autoload.php) is not within the allowed path(s): (/www/admin/nav.mhbdng.cn_80/wwwroot/public/:/tmp/:/proc/) in /www/admin/nav.mhbdng.cn_80/wwwroot/public/index.php on line 24

Warning: require(/www/admin/nav.mhbdng.cn_80/wwwroot/vendor/autoload.php): failed to open stream: Operation not permitted in /www/admin/nav.mhbdng.cn_80/wwwroot/public/index.php on line 24

Fatal error: require(): Failed opening required '/www/admin/nav.mhbdng.cn_80/wwwroot/public/../vendor/autoload.php' (include_path='.:/usr/local/phpstudy/soft/php/php-7.1.31/lib/php') in /www/admin/nav.mhbdng.cn_80/wwwroot/public/index.php on line 24


报错原因:

重启网站后在根目录生成了.user.ini文件。


解决方案:

1.删除.user.ini文件:

//进入项目public目录
#cd public
//显示所有文件
#ls -a
//linux会默认隐藏 . 开头的文件和文件夹,-a命令使其显示
//此时文件列表里能看到.user.ini文件,将其删除
#rm .user.ini

此方案重启网站后还是会生成.user.ini文件,并且.user.ini文件用于防止脚本跨目录执行  ,如果你使用的是nginx则不推荐删除。

Tips:

.htaccess是伪静态环境配置文件,用于lamp。

.user.ini是lnmp文件,里面放的是你网站的文件夹路径地址。目的是防止跨目录访问和文件跨目录读取.


2.修改.user.ini文件

#cd public
#ls -a
vim .user.ini
//如果.user.ini没有修改权限则是文件被锁定了,先解锁
#chattr -i .user.ini
//显示如下内容
#open_basedir=/www/wwwroot/public/:/tmp/:/proc/
//删除public
#open_basedir=/www/wwwroot/:/tmp/:/proc/
//保存退出vim
# :wq
//最后锁定.user.ini文件让其不能修改
#chattr +i .user.ini


推荐第二种方案。


热门文章 关于前台使用ajax后台使用PhpSpreadsheet从数据库导出excel 对于Laravel Blade模板转义html标签的记录 PHP-文件上传 去除隐藏字符—— PHP-验证码制作
评论成功!
评论内容不能为空

tips:仅支持jpg,jpeg,png格式图片。