# 配置
- [基礎介紹](#introduction)
- [獲取設置值](#accessing-configuration-values)
- [環境配置](#environment-configuration)
- [判定目前使用的環境](#determining-the-current-environment)
- [緩存配置信息](#configuration-caching)
- [維護模式](#maintenance-mode)
<a name="introduction"></a>
## 基礎介紹
所有 Laravel 框架的配置文件都放置在 `config` 目錄下。每個選項都有說明,請仔細閱讀這些說明,并熟悉這些選項配置。
<a name="accessing-configuration-values"></a>
## 獲取設置值
可以使用 `config` 輔助函數獲取你的設置值,設置值可以通過「點」語法來獲取,其中包含了文件與選項的名稱。你也可以指定一個默認值,當該設置選項不存在時就會返回默認值:
$value = config('app.timezone');
若要在運行期間修改設置值,請傳遞一個數組至 `config` 輔助函數:
config(['app.timezone' => 'America/Chicago']);
<a name="environment-configuration"></a>
## 環境配置
應用程序常常需要根據不同的運行環境設置不同的值。例如,你會希望在本機開發環境上有與正式環境不同的緩存驅動。類似這種環境變量,只需通過 `.env` 配置文件就可輕松完成。
Laravel 使用 Vance Lucas 的 [DotEnv](https://github.com/vlucas/phpdotenv) PHP 函數庫來實現項目內環境變量的控制,在安裝好的全新 Laravel 應用程序里,在根目錄下會包含一個 `.env.example` 文件。如果你通過 Composer 安裝 Laravel,這個文件將自動被更名為 `.env`,否則你只能手動更改文件名。
#### 獲取環境變量
當你的應用程序收到請求時,這個文件所有的變量都會被加載到 PHP 超級全局變量 `$_ENV` 里。你可以使用輔助函數 `env` 來獲取這些變量的值。事實上,如果你閱讀過 Laravel 的相關配置文件,你會注意到里面有幾個選項已經在使用著這個輔助函數!
'debug' => env('APP_DEBUG', false),
`env` 函數的第二個參數是默認值,如果未找到對應的環境變量配置的話,此值就會被返回。
根據本機服務器或者正式環境的需求的不同,可自由修改環境變量。但是,`.env` 文件不應該被提交到版本控制系統,因為每個開發人員或服務器在使用應用程序時,可能需要不同的環境配置。
不妨將 `.env.example` 文件放進你的應用程序,通過樣本配置文件里的預設值,團隊中的其他開發人員就可以清楚地知道,在運行你的應用程序時有哪些環境變量是必須有的。
<a name="determining-the-current-environment"></a>
### 判定目前使用的環境
應用程序的當前環境是由 `.env` 文件中的 `APP_ENV` 變量所決定的。你可以通過 `App` [facade](/docs/{{version}}/facades) 的 `environment` 方法來獲取該值:
$environment = App::environment();
你也可以傳遞參數至 `environment` 方法來確認當前環境是否與參數相符合:
if (App::environment('local')) {
// 當前正處于本地開發環境
}
if (App::environment('local', 'staging')) {
// 當前環境處于 `local` 或者 `staging`
}
<a name="configuration-caching"></a>
## 緩存配置信息
為了讓應用程序的速度獲得提升,可以使用 Artisan 命令 `config:cache` 將所有的配置文件緩存到單個文件。通過此命令將所有的設置選項合并成一個文件,讓框架能夠更快速的加載。
你應該將運行 `php artisan config:cache` 命令作為部署工作的一部分。此命令不應該在開發時運行,因為設置選項會在開發時經常變動。
> 譯者注:更多 Laravel 程序調優技巧請參閱:[Laravel 5 程序優化技巧](https://phphub.org/topics/2020)
<a name="maintenance-mode"></a>
## 維護模式
當你的應用程序處于維護模式時,所有傳遞至應用程序的請求都會顯示出一個自定義視圖。在你更新應用或進行性能維護時,這么做可以很輕松的「關閉」整個應用程序。維護模式會檢查包含在應用程序的默認的中間件堆棧。如果應用程序處于維護模式,則 `HttpException` 會拋出 503 的狀態碼。
啟用維護模式,只需要運行 Artisan 命令 `down`:
php artisan down
你可以指定 `dowm` 命令的 `message` 和 `retry` 選項。`message` 自定義顯示給用戶的信息,`retry` 作為 `Retry-After` HTTP 標頭返回:
php artisan down --message='Upgrading Database' --retry=60
關閉維護模式,請使用 Artisan 命令 `up`:
php artisan up
#### 維護模式的響應模板
維護模式的默認模板放在 `resources/views/errors/503.blade.php`。
#### 維護模式與隊列
當應用程序處于維護模式中時,將不會處理任何 [隊列工作](/docs/{{version}}/queues)。所有的隊列工作將會在應用程序離開維護模式后被繼續運行。
#### 維護模式的替代方案
維護模式有幾秒鐘的服務器不可用時間,如果你想做到平滑遷移的話,推薦使用 [Envoyer](https://envoyer.io) 服務。
- 說明
- 翻譯說明
- 發行說明
- 升級說明
- 貢獻導引
- 入門指南
- 安裝
- 配置信息
- 文件夾結構
- 錯誤與日志
- 開發環境
- HomeStead
- Valet
- 核心概念
- 服務容器
- 服務提供者
- 門面(facades)
- contracts
- HTTP層
- 路由
- 中間件
- CSRF保護
- 控制器
- 請求
- 響應
- Session
- 表單驗證
- 視圖與模板
- 視圖
- Blade模板
- 本地化
- Javascript與CSS
- 入門指南
- laravel-elixir
- 安全
- 用戶認證
- 用戶授權
- 重置密碼
- API授權
- 加密解密
- 哈希
- 綜合話題
- 廣播系統
- 緩存系統
- 事件系統
- 文件存儲
- 郵件發送
- 消息通知
- 隊列
- 數據庫
- 快速入門
- 查詢構造器
- 分頁
- 數據庫遷移
- 數據填充
- redis
- Eloquent ORM
- 快速入門
- 模型關聯
- Eloquent集合
- 修改器
- 序列化
- Artisan控制臺
- Artisan 命令行
- 任務調度
- 測試
- 快速入門
- 應用程序測試
- 數據庫測試
- 模擬器
- 官方擴展包
- Cashier交易包
- Envoy 部署工具
- Passport OAuth 認證
- Scout 全文搜索
- Socialite 社交化登錄
- 附錄
- 集合
- 輔助函數
- 擴展包開發
- 交流說明