天天看點

laravel5.7 配置資訊 配置資訊配置

 配置資訊

5.7

 Laravel 5.7 中文文檔 /  配置資訊

配置

  • 介紹
  • 環境配置
    • 環境變量類型
    • 檢索環境配置
    • 确定目前環境
  • 通路配置值
  • 配置緩存
  • 維護模式

介紹

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 (bool) true
(true) (bool) true
false (bool) false
(false) (bool) false
empty (string) ''
(empty) (string) ''
null (null) null
(null) (null) null

如果你需要使用包含空格的值定義環境變量,可以通過将值括在雙引号中來實作。

APP_NAME="My Application"
           

檢索環境配置

當應用程式收到請求時,

.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

 環境變量覆寫。這在為相同的應用程式配置不同的環境時是非常有用的,這樣你可以在你的伺服器配置中為給定的主機設定與其比對的給定的環境。

通路配置值

你可以輕松地在應用程式的任何位置使用全局 

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

 指令提供 

message

 和 

retry

 選項。其中 

message

 選項的值可用于顯示或記錄自定義消息,而 

retry

 值可用于設定 HTTP 請求頭中 

Retry-After

 的值:

php artisan down --message="Upgrading Database" --retry=60
           

即使在維護模式下,也可以使用指令 

allow

 選項允許特定的 IP 位址或網絡通路應用程式:

php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16
           

要關閉維護模式,請使用 

up

 指令:

php artisan up
           
{tip} 你可以通過修改 

resources/views/errors/503.blade.php

 模闆檔案來自定義預設維護模式模闆。

維護模式 & 隊列

當應用程式處于維護模式時,不會處理 隊列任務。而這些任務會在應用程式退出維護模式後再繼續處理。

維護模式的替代方案

維護模式會導緻應用程式有數秒的停機(不響應)時間,是以你可以考慮使用像 Envoyer 這樣的替代方案,以便與 Laravel 完成零停機時間部署。

本文章首發在 Laravel China 社群

 上一篇下一篇 

 Markdown 文本