不知道大家有沒有考慮過這樣一個問題:既然有配置文件了,那么這個.env文件的作用是什么呢?
你肯定有這樣的經歷吧,本地環境和服務器環境是不同的,有些配置值就會不一樣,比如數據庫配置信息不同、域名不同等等。這樣就會導致一些問題,如果你使用了版本控制系統,那么服務器端拉取了最新的代碼,服務端的配置文件就會變為本地開發環境的了。然后你需要一個個的去看,然后去修改,是不是非常的麻煩!還有可能你本地的配置信息會被其他開發伙伴看到(可能你本地的數據庫信息也很重要的話,你就不希望其他人知道)
.env文件就是為了解決這樣的問題的。我們可以將服務器和本地環境配置項一致的,都放在配置文件中,將不同的配置項及那些敏感的信息則放在.env文件中。另外注意,不將.env文件放在版本控制系統中。
另外你應該注意到,根目錄下還有一個.env.example文件。這個文件一般是建議放在版本控制系統中的,它是為了讓其他開發者知道,你應該將這個文件復制一份,并將其名稱修改為.env。然后將里面的值按照你自己的環境設定。
如果你和我一樣,有三種不同的環境:開發環境、測試環境、線上環境。那么你還應該再創建一個.env.testing文件。當運行 phpUnit 測試或以 –env=testing 為選項執行 Artisan 命令時,該文件將覆蓋 .env 文件中的值。
超全局變量$_ENV
.env文件了列出的所有變量,會被加載到php的超全局變量$_ENV中,可以通過該變量檢索相應的值。
確定當前系統環境
應用程序當前的所處環境是由.env文件里的APP_ENV決定的。你可以用App::environment()方法來獲取該選項的值。如:
if?('local'?==?App::environment())?{ ????//?本地環境 }