Domain is currently unable to handle this request (open_basedir)

下载Yii2 安装包到Liunx,发现如果用localhost/basic/web是可以访问

但是如果用www.basic.com就访问不了.页面会提示500,如下

www.basic.com is currently unable to handle this request

然后上Stack Overflow找了下发现只要修改下php.ini(注意保存源文件)
修改下面2个位置

display_errors = 1  //默认是 off
error_reporting = E_ALL  //默认E_ALL & ~E_DEPRECATED & ~E_STRICT

然后就可以看到错误提示啦..开心!

Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/default/basic/vendor/autoload.php) is not within the allowed path(s): (/home/wwwroot/default/basic/web/:/tmp/:/proc/) in /home/wwwroot/default/basic/web/index.php on line 9

Warning: require(/home/wwwroot/default/basic/vendor/autoload.php): failed to open stream: Operation not permitted in /home/wwwroot/default/basic/web/index.php on line 9

Fatal error: require(): Failed opening required '/home/wwwroot/default/basic/web/../vendor/autoload.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/default/basic/web/index.php on line 9

有提示错误就好办了,问题在open_basedir()这里
网上资料显示修改

usr/local/php/etc/php.ini  
/usr/local/nginx/conf.fastcgi.conf   //在这里修改

发现最底下有一行配置信息

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:tmp/:/proc/';

在这里后面加上我们需要修改的目录即可啦啦啦啦啦~

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:tmp/:/proc/:/home/wwwroot/default/basic/';

关于open_basedir()资料

将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。本指令不受安全模式打开或者关闭的影响。
当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时,该文件的位置将被检查。
当文件在指定的目录树之外时 PHP 将拒绝打开它。
所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
特殊值 . 指明脚本的工作目录将被作为基准目录。但这有些危险,因为脚本的工作目录可以轻易被 chdir() 而改变。

在 httpd.conf 文件中中,open_basedir 可以像其它任何配置选项一样用“php_admin_value open_basedir none”的方法关闭(例如某些虚拟主机中)。

在 Windows 中,用分号分隔目录。在任何其它系统中用冒号分隔目录。作为 Apache 模块时,父目录中的 open_basedir 路径自动被继承。

用 open_basedir 指定的限制实际上是前缀,不是目录名。
也就是说“open_basedir = /dir/incl”也会允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。
如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:“open_basedir = /dir/incl/”。

总结下, 可以有几种方式设置限制包含目录

1)php.ini open_basedir = /home/wwwroot/
2)ini_set 注意:PHP >5.2.3+ PHP_INI_ALL ,不建议使用,这么设置太随意了。
3)apache 的 httpd.conf 中Directory配置

"php_admin_value open_basedir none" #关闭 
php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"

httpd.conf中VirtualHost

php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"

4)nginx fastcgi.conf

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";

5).user.ini 文件
设置方法同 1 .
备注: 可以用

chattr -i ./user.ini

进行解锁文件,然后修改里面的目录路径.这个我经常用.简单,只是缺陷也很明显 .


以上关于open_basedir()的资料来自简书,[作者:codefine 地址]..(http://www.jianshu.com/p/ac80cf3b5169)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值