PHP学习笔记【配置】open_basedir

最近开始学习YII2.0。刚开始的时候遇到了各种问题

Warning: require(): open_basedir restriction in effect. File(F:\newpro\Yii2basic\basic\vendor\autoload.php) is not within the allowed path(s): 

像是这样。

然后各种百度。。。说一下自己配置。 nginx+php5.4 在windows平台下的。

最终知道是怎么回事,给大家分享一下。php.ini里面有这样的一个配置open_basedir

.ini里面的英文解释是这样的。

; if set, limits all file operations to the defined directory 
; and below.
; This directive makes most sense if used in a per-directory 
; or per-virtualhost web server configuration file. 
;This directive is  *NOT* affected by whether Safe Mode is turned On or Off. 
http://php.net/open-basedir
金山词霸一下是这样子滴:
1.如果设置,限制所有的文件操作定义的目录下。
2.本指令在每个目录或虚拟主机Web服务器的配置文件是有作用。
3.本指令不受是否安全模式打开或者关闭。(不受安全模式影响)

人话就是:
1.限制了PHP项目的操作(运行)目录。
2.如果设置了,则所有虚拟主机均要设置到 open_basedir设置的目录下。而且所有的虚拟主机都会收到他的影响。
3.这条指令的设置不受PHP的安全模式影响。是完全独立的一条指令。

例如:
我的YII2.0 放到了  F:\newpro\Yiibase 里面

nginx 服务器虚拟主机设置的 root 路径为 f:/newpro/Yii2basic/basic/web;(apache是一样的)。
web目录下的inde.php 文件里面有这样一句话。
require(__DIR__ . '/../vendor/autoload.php');  
此时open_basedir是注释掉的。对应设置的 ServerName :  yiibase.com
此时,访问 yiibase.com的时候会报错,
就像开头的那样

没有权限访问。open_basedir 限制效应。
说明默认PHP是不认可这种 require(__DIR__ . '/../vendor/autoload.php');  访问当前虚拟主机根目录下的上级目录的。(请仔细理解这句话)

下面开启,我这边设置到 f:\newpro。 我自己的这个文件夹下。
开启后,我所有的PHP项目虚拟主机目录都要设置到这个目录下了。此时访问yiibase.com 也是OK的了。
但,我所有PHP项目都要设置到 newpro这个文件夹下了。

好吧,上面就是我在刚开始学习YII2.0的时候遇到的一个问题。可折腾死我了。后来发现其实是可以把入口文件拿出来的,然后改一下访问路径即可。

网上也有人说不要开启这个 open_basedir。是一些网络安全什么的。具体我也不是很清楚。希望有大神能解答一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值