laravel .env文件的使用


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM