[TOC]
### **1、介紹**
[Laravel](http://laravelacademy.org/tags/laravel "View all posts in Laravel")?的所有[配置](http://laravelacademy.org/tags/%e9%85%8d%e7%bd%ae "View all posts in 配置")文件都存放在?`config`?目錄下,每個配置項都有注釋,以保證瀏覽任意配置文件的配置項都能直觀了解該配置項的作用及用法。
### **2、訪問配置值**
你可以使用全局輔助函數?`config`?在應用的任意位置訪問配置值,該配置值可以文件名+”.”+配置項的方式進行訪問,當配置項沒有被配置的時候返回默認值:
~~~
$value = config('app.timezone');
~~~
如果要在運行時設置配置值,傳遞數組參數到?`config`?方法即可:
~~~
config(['app.timezone' => 'America/Chicago']);
~~~
### **3、[環境](http://laravelacademy.org/tags/%e7%8e%af%e5%a2%83 "View all posts in 環境")配置**
基于應用運行的環境不同設置不同的配置值能夠給我們開發帶來極大的方便,比如,我們通常在本地和線上環境配置不同的[緩存](http://laravelacademy.org/tags/%e7%bc%93%e5%ad%98 "View all posts in 緩存")驅動,這一機制在 Laravel 中很容易實現。
Laravel 使用 Vance Lucas 開發的 PHP 庫?[DotEnv](https://github.com/vlucas/phpdotenv)?來實現這一機制,在新安裝的 Laravel 中,根目錄下有一個`.env.example`?文件,如果 Laravel 是通過 Composer 安裝的,那么該文件已經被重命名為?`.env`,否則的話你要自己手動重命名該文件。
在應用每次接受請求時,`.env`?中列出的所有配置及其值都會被載入到 PHP 超全局變量?`$_ENV`?中,然后你就可以在應用中通過輔助函數?`env`?來獲取這些配置值。實際上,如果你去查看 Laravel 的配置文件,就會發現很多地方已經在使用這個輔助函數了:
~~~
'debug' => env('APP_DEBUG', false),
~~~
傳遞到?`env`?函數的第二個參數是默認值,如果環境變量沒有被配置將會是個該默認值。
不要把?`.env`?文件提交到源碼控制(svn 或 git 等)中,因為每個使用你的應用的開發者/服務器可能要求不同的環境配置。
如果你是在一個團隊中進行開發,你需要將?`.env.example`?文件隨你的應用一起提交到源碼控制中:將一些配置值以占位符的方式放置在?`.env.example`?文件中,這樣其他開發者就會很清楚運行你的應用需要配置哪些環境變量。
#### **訪問當前應用環境**
當前應用環境由?`.env`?文件中的?`APP_ENV`?變量決定,你可以通過 App 門面 的?`environment`?方法來訪問其值:
~~~
$environment = App::environment();
~~~
你也可以向?`environment`?方法中傳遞參數來判斷當前環境是否匹配給定值,如果需要的話你甚至可以傳遞多個值。如果當前環境與給定值匹配,該方法返回?`true`:
~~~
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
~~~
應用實例也可以通過輔助函數?`app`?來訪問:
~~~
$environment = app()->environment();
~~~
### **4、配置緩存**
為了給應用加速,你可以使用 Artisan 命令?`config:cache`?將所有配置文件的配置緩存到單個文件里,這將會將所有配置選項合并到單個文件從而可以被框架快速加載。
應用一旦上線,就要運行一次?`php artisan config:cache`,但是在本地開發時,沒必要經常運行該命令,因為配置值經常需要改變。
### **5、[維護模式](http://laravelacademy.org/tags/%e7%bb%b4%e6%8a%a4%e6%a8%a1%e5%bc%8f "View all posts in 維護模式")**
當你的應用處于維護模式時,所有對應用的請求都會返回同一個自定義視圖。這一機制在對應用進行升級或者維護時,使得“關閉”站點變得輕而易舉。對維護模式的判斷代碼位于應用默認的中間件棧中,如果應用處于維護模式,則狀態碼為?`503`?的?`HttpException`?將會被拋出。
要開啟維護模式,只需執行 Artisan 命令?`down`?即可:
~~~
php artisan down
~~~
要關閉維護模式,對應的 Artisan 命令是?`up`:
~~~
php artisan up
~~~
#### **維護模式響應模板**
默認的維護模式響應模板是?`resources/views/errors/503.blade.php`
#### **維護模式 & 隊列**
當你的站點處于維護模式中時,所有的隊列任務都不會執行;當應用退出維護模式這些任務才會被繼續正常處理。
#### **維護模式的替代方案**
由于維護模式命令的執行需要幾秒時間,你可以考慮使用 Envoyer 實現 0 秒下線作為替代方案。
- 序言
- 發行版本說明
- 升級指南
- 貢獻代碼
- 開始
- 安裝
- 配置
- Laravel Homestead
- 基礎
- HTTP 路由
- HTTP 中間件
- HTTP 控制器
- HTTP 請求
- HTTP 響應
- 視圖
- Blade 模板引擎
- 架構
- 一次請求的生命周期
- 應用目錄結構
- 服務提供者
- 服務容器
- 門面(Facades)
- 數據庫
- 起步
- 查詢構建器
- 遷移
- 填充數據
- Eloquent ORM
- 起步
- 關聯關系
- 集合
- 訪問器&修改器
- 序列化
- 服務
- 用戶認證
- 用戶授權
- Artisan Console
- 訂閱支付實現:Laravel Cashier
- 緩存
- 集合
- 集成前端資源:Laravel Elixir
- 加密
- 錯誤&日志
- 事件
- 文件系統/云存儲
- 哈希
- 輔助函數
- 本地化
- 郵件
- 包開發
- 分頁
- Redis
- 隊列
- Session
- Envoy Task Runner
- 任務調度
- 測試
- 驗證
- 新手入門指南
- 簡單任務管理系統
- 帶用戶功能的任務管理系統