可能許多童鞋和我一樣,在看文檔時被.env文件和config目錄里的配置文件搞混亂了,它們之間到底什么關(guān)系。今天,我們一起看看它們之前的關(guān)系吧。
.env文件與config目錄配置文件關(guān)系
首先,文檔里說laravel所有配置文件都保存在config目錄的文件中。那么根目錄下的.env文件到底是干嘛的呢?我們打開看下.env文件以及config/app.php這兩個文件
# .env文件 APP_NAME=Laravel …… # app.php文件 'name' => env('APP_NAME', 'Larave'),
看到這,我基本可以猜測出來大致意思了:如果config目錄下的配置文件配置項使用了env函數(shù),那么如果.env文件中配置了該選項,則使用.env文件里的值,否則使用配置文件設(shè)置的默認值
接下來,來驗證我的猜測。首先寫下測試代碼:
return config('app.name');
接著,將.env文件的APP_NAME修改為boy,app.php文件里的默認值修改為girl
APP_NAME=boy …… 'name' => env('APP_NAME', 'girl'),
發(fā)現(xiàn)一個有趣的問題,測試代碼返回的結(jié)果還是Laravel。然后,我重啟了下php artisan serve,然后再刷新才出現(xiàn)結(jié)果為boy。這樣就驗證了我的猜測是對的,但有引出另一個推測:如果用到的配置值在.env文件里,那么修改.env文件里的值不會立即有效,必須重啟才會有效
為了驗證我的另一個猜測,我將.env里的APP_NAME那行給刪除了,然后重啟。測試的返回結(jié)果是girl。接著,我將girl修改為girl1,然后刷新瀏覽器,返回值是girl1。所以我的結(jié)論驗證的正確的。
這里總結(jié)下:
如果config目錄下的配置文件配置項使用了env函數(shù),那么如果.env文件中配置了該選項,則使用.env文件里的值,否則使用配置文件設(shè)置的默認值
如果用到的配置值在.env文件里,那么修改.env文件里的值不會立即有效,必須重啟php artisan serve才會有效