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
有需要交流的小伙伴可以点击这里加本人QQ:luke

laravel .env文件的使用的更多相关文章

  1. 关于Lumen / Laravel .env 文件中的环境变量是如何生效的

    .env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过  调用 env() 或 $_SERVER 或 $_ENV  来获取该变量.那么env()是如何加载到这些变量的呢?在Lume ...

  2. laravel .env 文件的使用

    转载地址  http://www.cnblogs.com/Eden-cola/p/DotEnv-in-lumen.html umen 是 laravel 的衍生品,核心功能的使用和 laravel 都 ...

  3. 保护Laravel .env文件,防止直接访问

    web服务器: Apache 服务器系统: Ubuntu 14.04 如果不是vhost的形式部署在服务器上,可能是可以通过 http://www.example.com/.env 查看到larave ...

  4. laravel中如何防止直接访问.env文件

    .env文件含有数据库账号密码等敏感数据,在laravel5.2中,在本地访问127.0.0.1/laravel/.env可直接访问到.env. 为避免.env被直接访问,可使用重定向,方法如下: 在 ...

  5. Laravel 5.2 四、.env 文件与模型操作

    一..env文件 .env 文件是应用的环境配置文件,在配置应用参数.数据库连接.缓存处理时都会使用这个文件. // 应用相关参数 APP_ENV=local APP_DEBUG=true //应用调 ...

  6. Laravel 学习 .env文件 getenv 获得环境变量的值

    Laravel 学习 .env文件 getenv 获得环境变量的值  我们还需要对应用的 .env 文件进行设置,为应用指定数据库名称 sample. .env . . . DB_DATABASE=s ...

  7. Laravel 不同环境加载不同的.env文件

    假设有4个.env文件.分别为 .env.local .env.dev .env.test .env.prd 方式一 第一步:bootstrap\app.php 加入代码 $envs = ['loca ...

  8. laravel删除文件

    laravel删除文件 一.总结 一句话总结: 1.注意disk:disk决定路径 2.删单个文件的时候就用删单个文件的方式,别用删多个文件的方式(也就是参数别数组) public function ...

  9. 通过.ENV文件来配置ThinkPHP的数据库连接信息

    在ThinkPHP系统根目录创建.env文件,注意WINDOWS无法直接右键创建,使用编辑器保存时设置文件名为.env就可以创建文件.内容如下: .evn文件内容如下: [database] host ...

随机推荐

  1. 【Android - 自定义View】之View的工作过程简介

    View的工作过程分为三个过程: View的measure过程: View的layout过程: View的draw过程. 我们知道,一个Activity就是一个窗口,这个窗口中包含一个Window.一 ...

  2. surfer白化

    surfer白化的方法: 方法一: 1.griddata需白化的文件(surfer处理成grd格式,也就是surfer绘图的基本数据格式) 注意:用surfer转换格式时,插值间距(spacing)大 ...

  3. 【w、vmstat、top、sar、nload】各个命令 使用介绍

    第7周第1次课(5月7日) 课程内容: 10.1 使用w查看系统负载10.2 vmstat命令10.3 top命令10.4 sar命令10.5 nload命令 10.1 使用w查看系统负载 w命令查看 ...

  4. Python数据分析I

    Python数据分析概述 数据分析的含义与目标 统计分析方法 提取有用信息 研究.概括.总结 Python与数据分析 Python: Guido Van Rossum Christmas Holida ...

  5. Java数组与C/C++数组的区别

    C数组一维数组: 定义方式:datatype arrayname[length]数组是一个整体,在内存中是连续的: 初始化:1:可以只给部分赋值int a[5] = {1,2}; 剩下的自动赋值为02 ...

  6. fsockopen与HTTP 1.1/HTTP 1.0

    在前面的例子中,HTTP请求信息头有些指定了 HTTP 1.1,有些指定了 HTTP/1.0,有些又没有指定,那么他们之间有什么区别呢? 关于HTTP 1.1与HTTP 1.0的一些基本情况,可以参考 ...

  7. VMware下载及安装使用方法

    一.VMware的介绍: 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统.DesktopVirtualBox,虚拟系统通过生成 ...

  8. 【开发记录】Linux常用命令记录(一)

    记录CentOS下,常用的命令.有时候很难记得清楚,同时方便新来的同学查阅.(将不停的追加和完善) 1)查看CPU情况 cat /proc/cpuinfo |grep "model name ...

  9. 我是怎样测试Java类的线程安全性的

    线程安全性是Java等语言/平台中类的一个重要标准,在Java中,我们经常在线程之间共享对象.由于缺乏线程安全性而导致的问题很难调试,因为它们是偶发的,而且几乎不可能有目的地重现.如何测试对象以确保它 ...

  10. SQL 数字转为中文大写

    USE [SPECIAL_BLD]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO CREATE FUNCTION [dbo].[get_upper] ...