laravel .env 文件的使用

转载地址  http://www.cnblogs.com/Eden-cola/p/DotEnv-in-lumen.htmlphp

umen 是 laravel 的衍生品,核心功能的使用和 laravel 都是一致的,但配置文件这一方面,lumen 在 laravel 的基础上增长了更简便的配置方式;
lumen 采用了 DotEnv 来读取 .env 文件,并将其做为默认的配置方式;
.env 在简化配置的同时,天然也不会有 .php 配置文件那么自由,我初期没有找到完善的中文资料,踩了一些坑后,决定本身整理整理html

.env 配置文件适用范围

.env 文件主要的做用是存储环境变量,也就是会随着环境变化的东西,好比数据库的用户名、密码、缓存驱动、时区,还有静态文件的存储路径之类的;
由于这些信息应该是和环境绑定的,不该该随代码的更新而变化,因此通常不会把 .env 文件放到版本控制中;laravel

除了和环境绑定的环境变量,有时候一些安全系数比较高,不但愿归入版本控制的信息也会放进 .env 文件,好比第三方API的secret之类的;git

不太适用的内容

严格来讲,传统的配置信息,好比上传文件的尺寸限制,或者一些算法的阈值之类的,其实不适合放到 .env 文件中,由于这些配置项是要和代码一同更新,且全部环境下应该都是一致的;
因此这些配置项仍是放到能够被版本控制工具管理的配置文件中更合适——说是这么说……但咱们在使用 lumen 的时候也常常把这些配置项放进 .env (这大概不是什么好习惯),毕竟若是这些配置项不多的话,单独建一个配置文件也有些不值的感受……github

.env 中的基本语法

说是语法……但真的很简单就是了web

.env 中的数据按行划分, 每条数据占一行,数据之间能够有任意多的空行
每条数据的核心是一个等号,等号左侧是 key,右侧是 value算法

KEY1=value1 KEY2=value2 KEY3=value3 KEY4=value4

在 key 的先后和 value 的先后均可以添加任意多的空格,读取时会自动去除先后空格
好比有这样一条配置项:数据库

KEY   =    value

在PHP中读取的时候,就会自动去除空格缓存

echo env('KEY') === 'value'; //true

若是 key 或者 value 中包含空格,就须要在两端加上双引号,好比这样:安全

"TEST KEY" = "test value"

若是须要添加注释,可使用#,好比这样:

#测试单行注释 KEY=value #测试行末注释

若是须要嵌套变量的话,也能够直接在 .env 中写, 借用官方的例子:

BASE_DIR="/var/webroot/project-root" CACHE_DIR="${BASE_DIR}/cache" TMP_DIR="${BASE_DIR}/tmp"

.env 能够存储的内容

前文说了,.env 是很是简单的配置文件,简单到什么程度呢?
它只支持一维K/V格式的配置项,并且 key 和 value 都只能是字符串。

那若是想存一个列表怎么办?

有的时候咱们须要在配置文件里存一个列表,好比支付平台调用 webhook 的时候只会从固定的IP地址发起,那咱们可能就会为了安全性,把这些IP地址放到一个白名单中,每次验证一下来源IP是否在名单列表以内;
像这种白名单列表有办法存到 .env 中么?
只能说……不能直接存进去,由于 .env 很简单,它的 value 只能是字符串,不过咱们能够尝试变通一下,使用一个链接符(好比半角逗号,)把白名单地址拼成一个字符串,使用时再分割开:

WHITE_LIST=192.168.0.1,192.168.0.2,192.168.0.3
相关文章
相关标签/搜索