配置資訊
- 環境配置
- 環境變數類型
- 擷取環境配置 維護模式
- 維護模式& 佇列
- 維護模式的替代方案
配置
#介紹Laravel 框架的所有設定檔都會儲存在config
環境配置對於應用程式運行的環境來說,不同的環境有不同的配置通常是很有用的。例如,你可能希望在本地使用的快取驅動不同於生產伺服器所使用的快取驅動。 Laravel 利用 Vance Lucas 的 PHP 函式庫 DotEnv 使得此項功能的實作變得非常簡單。在新安裝好的 Laravel 應用程式中,其根目錄會包含一個目錄中。每個選項都有說明,你可隨時查看這些檔案並熟悉都有哪些設定選項可供你使用。
.env.example
你的檔案。如果是透過 Composer 安裝的 Laravel,該檔案會自動更名為
.env。否則,需要你手動更改一下檔案名稱。
.env
如果是團隊開發,則可能希望應用程式中仍包含檔案不應該提交到應用程式的原始碼控制系統中,因為每個使用你的應用程式的開發人員/ 伺服器可能需要有一個不同的環境配置。此外,在入侵者獲得你的原始碼控制倉庫的存取權的情況下,這會成為一個安全隱患,因為任何敏感的憑證都被揭露了。
.env.example
檔案。因為透過在範例設定檔中放置佔位值,團隊中的其他開發人員可以清楚地看到哪些環境變數是執行應用程式所必需的。你也可以建立一個
.env.testing文件,當執行PHPUnit 測試或以
--env=testing為選項執行Artisan 指令時,該文件會覆寫
.env檔案中的值。
{tip}
環境變數類型.env
檔案中的所有變數都可被外部環境變數(例如伺服器層級或系統層級環境變數)所覆寫。
#.env
檔案中的所有變數都解析為字串,因此創建了一些保留值以允許你從
env()函數中傳回更多類型的變數:
##.env ##env()值
值 #true (布林)true (true) (布林)true #假 (布爾)假 (假) (布爾)假 #empty (字串) '' (空) (字串) '' #null (null) null (null) (null) null 如果你需要使用包含空格的值定義環境變量,可以透過將值括在雙引號中來實現。
APP_NAME="我的 应用"
檢索環境配置
當應用程式收到請求時,
.env
檔案中列出的所有變數將會被載入到PHP 的超級全域變數$ _ENV
中。你可以使用env
函數來檢索這些變數的值。事實上,如果你查看Laravel 的配置文件,你就能注意到有幾個選項已經使用了這個函數:'debug' => env('APP_DEBUG', false),
傳遞給
env
函數的第二個值是「默認值」。如果給定的鍵不存在環境變量,則會使用該值。確定目前環境
應用程式目前所處環境是透過
.env
檔案中的APP_ENV
變數確定的。你可以透過App
facade 中的environment
方法來存取此值:$environment = App::environment();
你也可以傳遞參數給
environment
方法,以檢查目前的環境配置是否與給定值相符。如果與給定值匹配,則該方法將傳回true
:if (App::environment('local')) { // 当前环境是 local } if (App::environment(['local', 'staging'])) { // 当前的环境是 local 或 staging... }
{tip} 應用程式目前所處環境偵測可以被伺服器層級的
APP_ENV
環境變數覆蓋。這在為相同的應用程式配置不同的環境時是非常有用的,這樣你可以在你的伺服器配置中為給定的主機設定與其匹配的給定的環境。在偵錯頁面隱藏環境變數
#當一個異常未被捕獲且
APP_DEBUG
環境變數為true
時,偵錯頁面會顯示所有的環境變數和內容。在某些情況下你可能想隱藏某些變數。你可以透過設定config/app.php
設定檔中的debug_blacklist
選項來完成這個操作。環境變數、伺服器或請求資料中都有一些變數是可用的。因此,你可能需要將
$_ENV
和$_SERVER
的變數加入黑名單:return [ // ... 'debug_blacklist' => [ '_ENV' => [ 'APP_KEY', 'DB_PASSWORD', ], '_SERVER' => [ 'APP_KEY', 'DB_PASSWORD', ], '_POST' => [ 'password', ], ], ];
存取設定值
你可以輕鬆地在應用程式的任何位置使用全域
config
函數來存取設定值。配置值的存取可以使用“點”語法,這其中包含了要存取的檔案和選項的名稱。也可以指定預設值,如果設定選項不存在,則傳回預設值:$value = config('app.timezone');
要在執行時間設定組態值,傳遞一個陣列給
config
函數config(['app.timezone' => 'America/Chicago']);
設定快取
為了讓你的應用程式提升速度,你應該使用Artisan 命令
config:cache
將所有的設定檔緩存到單一文件中。這會把你的應用程式中所有的設定選項合併成一個單一的文件,然後框架會快速載入這個文件。通常來說,你應該把執行
php artisan config:cache
指令當作生產環境部署常規工作的一部分。這個命令不應在本地開發環境下運行,因為配置選項在應用程式開發過程中是經常需要被更改的。{note} 如果在部署過程中執行
config:cache
命令,那麼你應該確保只從設定檔內部呼叫env
函數。一旦配置被緩存,.env
檔案將不再被加載,所有對env
函數的呼叫都會傳回null
。維護模式
當應用程式處於維護模式時,所有對應用程式的請求都顯示為自訂視圖。這樣可以在更新或執行維護時輕鬆地「關閉」你的應用程式。維護模式檢查包含在應用程式的預設中間件堆疊中。如果應用程式處於維護模式,則會拋出一個狀態碼為 503 的
MaintenanceModeException
例外。要啟用維護模式,只要執行下面的Artisan 的
down
指令:php artisan down
你也可以提供##down
Retry-After## message
和retry
選項。其中message
選項的值可用來顯示或記錄自訂訊息,而retry
值可用於設定HTTP 請求頭中的值:
allow
即使在維護模式下,也可以使用命令php artisan down --message="Upgrading Database" --retry=60
選項允許特定的IP 位址或網路存取應用程式:
up
要關閉維護模式,請使用php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16
指令:
範本檔案來自訂預設維護模式範本。php artisan up
{tip} 你可以透過修改resources/views/errors/503.blade.php
維護模式 & 佇列
當應用程式處於維護模式時,不會處理 佇列任務。而這些任務會在應用程式退出維護模式後再繼續處理。
維護模式的替代方案
LearnKu.com