laravel .env 文件的使用

laravel .env 文件的使用

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

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

.env 配置文件适用范围

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

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

不太适用的内容

严格来说,传统的配置信息,比如上传文件的尺寸限制,或者一些算法的阈值之类的,其实不适合放到 .env 文件中,因为这些配置项是要和代码一同更新,且所有环境下应该都是一致的;
所以这些配置项还是放到可以被版本控制工具管理的配置文件中更合适——说是这么说……但我们在使用 lumen 的时候也经常把这些配置项放进 .env (这大概不是什么好习惯),毕竟如果这些配置项很少的话,单独建一个配置文件也有些不值的感觉……

.env 中的基本语法

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

.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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113174.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 做网站-Http状态码详解

    做网站-Http状态码详解

    2021年10月30日
    45
  • 基于Vue的电商后台管理系统

    基于Vue的电商后台管理系统前端项目是基于Vue的SPA项目,前端技术栈采用Vue+VueRouter+Element-UI+Axios+Echarts。目前完成进度:登陆界面、登录和退出功能、导航守卫功能

    2022年6月14日
    32
  • Redis集群详解

    Redis集群详解Redis集群详解Redis有三种集群模式,分别是:*主从模式*Sentinel模式*Cluster模式三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)——RedisRedis官网:https://redis.io/,最新版本5.0.4主从模式主从模式介绍主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从…

    2022年6月13日
    25
  • ORACLE SEQUENCE 权限

    ORACLE SEQUENCE 权限
    ORACLESEQUENCE的简单介绍
    如何修改sequence的权限(将用户aaa下的sequence查询权限分配给用户bbb):
    connaaa/aaa
    grantselect onsequencenametobbb
    connbbb/bbb
    selectaaa.sequencename.nextvalfromdual
     
    授予和收回权限
    grantselectonseq_teamme

    2022年10月19日
    4
  • Linux 内核编译(三天吐血经历!)[通俗易懂]

    Linux 内核编译(三天吐血经历!)[通俗易懂]写在前面的话:本人大二,东南大学一个软工狗,正在修一门名为《操作系统原理》的坑爹课!前几天做一个实验:编译Linux内核并向其增加一个系统调用。这个实验实在是太让人无语了,各种坑!昨天这个时候,我还在苦苦煎熬中。在今天凌晨四点才做好。为了让其他人少走一些弯路,鄙人就把自己的经验以及教训写下来。里面会有一些不足,希望大家多多指教~废话不多说,那就开始吧:一、实验前的准备:Vm

    2022年7月23日
    15
  • 来自程序猿的一些废话

    “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早

    2021年12月22日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号