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
相關文章
相關標籤/搜索