is not within the allowed path ?

描述

  • 阿里云 centos6.5
  • LNMP一键安装
  • thinkphp3.2

页面出现500错误, 把错误开启 ini_set('display_errors','1'); error_reporting(E_ALL); 出现下面错误.

Warning: require(): open_basedir restriction in effect. File(/xxxx/wwwroot/api.xxxx.com/ThinkPHP/ThinkPHP.php) is not within the allowed path(s): (/xxxx/wwwroot/api1.xxxx.com/:/tmp/) in /xxxx/wwwroot/api.xxxx.com/index.php on line 35 Warning: require(/xxxx/wwwroot/api.xxxx.com/ThinkPHP/ThinkPHP.php): failed to open stream: Operation not permitted in /xxxx/wwwroot/api.xxxx.com/index.php on line 35 Fatal error: require(): Failed opening required './ThinkPHP/ThinkPHP.php' (include_path='.:') in /xxxx/wwwroot/api.xxxx.com/index.php on line 35

前因

项目由于磁盘空间不足就新增加了一块, 由于原来的移动到新挂载的磁盘中.就出现以上问题. 但是通过https访问却是正常的. http访问就会现在上面错误.

关于配置

php.ini中open_basedir 并没有启用

阅读 11.5k
2 个回答

使用的是LNMP一键安装的环境, 当使用其vhost add 来增加虚拟主机时会在php.ini增加open_basedir. 当项目移动目录时, 而没有更改php.ini里的信息就会出现上面问题.

可以修改/usr/local/php/etc/php.ini在末尾里加入:

[HOST=www.xxx.net]
open_basedir=/home/wwwroot/www.xxx.net/:/tmp/
[PATH=/home/wwwroot/www.xxx.net]
open_basedir=/home/wwwroot/www.xxx.net/:/tmp/

其它可能导致出现这个问题

ll -a //查看隐藏文件

.user.ini //如果网站目录有这个文件, 请查看参考答案2

参考答案1
参考答案2

如果linux环境是宝塔安装的,可以尝试以下解决方案

一. 点击网站

clipboard.png

二.点击设置

clipboard.png

三. 将防跨站攻击的选项去掉

clipboard.png

四.重启php

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题