Yii2 透過入口腳本中的兩個常數 YII_DEBUG 與 YII_ENV 控制框架行為,正確配置關係到錯誤顯示、效能、安全性。本文說明兩種環境的標準設定與差異。
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
行為特徵:
defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');
行為特徵:
YII_ENV 為 prod 時,Yii::$app->params 可載入 params-prod.php 覆蓋預設配置| 誤區 | 正確做法 |
|---|---|
| 生產環境仍開啟 YII_DEBUG | 嚴禁,會洩露資料庫結構、路徑、變數值 |
| 用 YII_ENV='production'(完整拼寫) | 官方常數為 prod,對應 params-prod.php |
| 入口檔寫死常數 | 建議由 Web 伺服器環境變數注入:defined('YII_DEBUG') or define('YII_DEBUG', getenv('YII_DEBUG') === '1'); |
| 忽略錯誤處理器配置 | 生產環境應在 config/main.php 設定 'errorHandler'=>['errorAction'=>'site/error'] |
config/
├── main.php # 共用基礎配置
├── main-local.php # 本機覆蓋(.gitignore)
├── params.php # 共用參數
├── params-prod.php # 生產參數(YII_ENV=prod 自動載入)
├── params-dev.php # 開發參數(YII_ENV=dev 自動載入)
一句話總結:開發環境開啟除錯、生產環境關閉除錯並啟用快取。部署流程務必包含環境變數驗證步驟,防止配置外洩。