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