国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

配置信息

配置信息


配置

介紹

Laravel 框架的所有配置文件都保存在 config 目錄中。每個選項都有說明,你可隨時查看這些文件并熟悉都有哪些配置選項可供你使用。

環(huán)境配置

對于應(yīng)用程序運行的環(huán)境來說,不同的環(huán)境有不同的配置通常是很有用的。 例如,你可能希望在本地使用的緩存驅(qū)動不同于生產(chǎn)服務(wù)器所使用的緩存驅(qū)動。

Laravel 利用 Vance Lucas 的 PHP 庫 DotEnv 使得此項功能的實現(xiàn)變得非常簡單。在新安裝好的 Laravel 應(yīng)用程序中,其根目錄會包含一個 .env.example 文件。如果是通過 Composer 安裝的 Laravel,該文件會自動更名為 .env。否則,需要你手動更改一下文件名。

你的 .env 文件不應(yīng)該提交到應(yīng)用程序的源代碼控制系統(tǒng)中,因為每個使用你的應(yīng)用程序的開發(fā)人員 / 服務(wù)器可能需要有一個不同的環(huán)境配置。此外,在入侵者獲得你的源代碼控制倉庫的訪問權(quán)的情況下,這會成為一個安全隱患,因為任何敏感的憑據(jù)都被暴露了。

如果是團隊開發(fā),則可能希望應(yīng)用程序中仍包含 .env.example 文件。因為通過在示例配置文件中放置占位值,團隊中的其他開發(fā)人員可以清楚地看到哪些環(huán)境變量是運行應(yīng)用程序所必需的。你也可以創(chuàng)建一個 .env.testing 文件,當運行 PHPUnit 測試或以 --env=testing 為選項執(zhí)行 Artisan 命令時,該文件將覆蓋 .env 文件中的值。

{tip} .env 文件中的所有變量都可被外部環(huán)境變量(比如服務(wù)器級或系統(tǒng)級環(huán)境變量)所覆蓋。

環(huán)境變量類型

.env 文件中的所有變量都被解析為字符串,因此創(chuàng)建了一些保留值以允許你從 env() 函數(shù)中返回更多類型的變量:

.envenv()
true(bool) true
(true)(bool) true
false(bool) false
(false)(bool) false
empty(string) ''
(empty)(string) ''
null(null) null
(null)(null) null

如果你需要使用包含空格的值定義環(huán)境變量,可以通過將值括在雙引號中來實現(xiàn)。

APP_NAME="我的 應(yīng)用"

檢索環(huán)境配置

當應(yīng)用程序收到請求時,.env 文件中列出的所有變量將被加載到 PHP 的超級全局變量 $ _ENV 中。你可以使用 env 函數(shù)檢索這些變量的值。事實上,如果你查看 Laravel 的配置文件,你就能注意到有數(shù)個選項已經(jīng)使用了這個函數(shù):

'debug' => env('APP_DEBUG', false),

傳遞給 env 函數(shù)的第二個值是「默認值」。如果給定的鍵不存在環(huán)境變量,則會使用該值。

確定當前環(huán)境

應(yīng)用程序當前所處環(huán)境是通過 .env 文件中的 APP_ENV 變量確定的。你可以通過 App facade 中的 environment 方法來訪問此值:

$environment = App::environment();

你還可以傳遞參數(shù)給 environment 方法,以檢查當前的環(huán)境配置是否與給定值匹配。 如果與給定值匹配,該方法將返回 true

if (App::environment('local')) {  
  // 當前環(huán)境是 local
  }
if (App::environment(['local', 'staging'])) {  
  // 當前的環(huán)境是 local 或 staging...
  }

{tip} 應(yīng)用程序當前所處環(huán)境檢測可以被服務(wù)器級的 APP_ENV 環(huán)境變量覆蓋。這在為相同的應(yīng)用程序配置不同的環(huán)境時是非常有用的,這樣你可以在你的服務(wù)器配置中為給定的主機設(shè)置與其匹配的給定的環(huán)境。

在調(diào)試頁面隱藏環(huán)境變量

當一個異常未被捕獲并且 APP_DEBUG 環(huán)境變量為 true 時,調(diào)試頁面會顯示所有的環(huán)境變量和內(nèi)容。在某些情況下你可能想隱藏某些變量。你可以通過設(shè)置 config/app.php 配置文件中的 debug_blacklist 選項來完成這個操作。

環(huán)境變量、服務(wù)器或者請求數(shù)據(jù)中都有一些變量是可用的。因此,你可能需要將 $_ENV$_SERVER 的變量加入到黑名單中:

return [  
  // ...  
  'debug_blacklist' => [ 
     '_ENV' => [ 
           'APP_KEY',  
           'DB_PASSWORD', 
        ],   
     '_SERVER' => [  
           'APP_KEY', 
            'DB_PASSWORD',   
          ],  
      '_POST' => [        
          'password',  
          ], 
       ],
   ];

訪問配置值

你可以輕松地在應(yīng)用程序的任何位置使用全局 config 函數(shù)來訪問配置值。配置值的訪問可以使用「點」語法,這其中包含了要訪問的文件和選項的名稱。還可以指定默認值,如果配置選項不存在,則返回默認值:

$value = config('app.timezone');

要在運行時設(shè)置配置值,傳遞一個數(shù)組給 config 函數(shù)

config(['app.timezone' => 'America/Chicago']);

配置緩存

為了給你的應(yīng)用程序提升速度,你應(yīng)該使用 Artisan 命令 config:cache 將所有的配置文件緩存到單個文件中。這會把你的應(yīng)用程序中所有的配置選項合并成一個單一的文件,然后框架會快速加載這個文件。

通常來說,你應(yīng)該把運行 php artisan config:cache 命令作為生產(chǎn)環(huán)境部署常規(guī)工作的一部分。這個命令不應(yīng)在本地開發(fā)環(huán)境下運行,因為配置選項在應(yīng)用程序開發(fā)過程中是經(jīng)常需要被更改的。

{note} 如果在部署過程中執(zhí)行 config:cache 命令,那你應(yīng)該確保只從配置文件內(nèi)部調(diào)用 env 函數(shù)。一旦配置被緩存,.env 文件將不再被加載,所有對 env 函數(shù)的調(diào)用都將返回 null。

維護模式

當應(yīng)用程序處于維護模式時,所有對應(yīng)用程序的請求都顯示為一個自定義視圖。這樣可以在更新或執(zhí)行維護時輕松地「關(guān)閉」你的應(yīng)用程序。 維護模式檢查包含在應(yīng)用程序的默認中間件棧中。如果應(yīng)用程序處于維護模式,則將拋出一個狀態(tài)碼為 503 的 MaintenanceModeException 異常。

要啟用維護模式,只需執(zhí)行下面的 Artisan 的 down 命令:

php artisan down

你還可以向 down 命令提供 messageretry 選項。其中 message 選項的值可用于顯示或記錄自定義消息,而 retry 值可用于設(shè)置 HTTP 請求頭中 Retry-After 的值:

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

即使在維護模式下,也可以使用命令 allow 選項允許特定的 IP 地址或網(wǎng)絡(luò)訪問應(yīng)用程序:

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

要關(guān)閉維護模式,請使用 up 命令:

php artisan up

{tip} 你可以通過修改 resources/views/errors/503.blade.php 模板文件來自定義默認維護模式模板。

維護模式 & 隊列

當應(yīng)用程序處于維護模式時,不會處理 隊列任務(wù)。而這些任務(wù)會在應(yīng)用程序退出維護模式后再繼續(xù)處理。

維護模式的替代方案

維護模式會導(dǎo)致應(yīng)用程序有數(shù)秒的停機(不響應(yīng))時間,因此你可以考慮使用像 Envoyer 這樣的替代方案,以便與 Laravel 完成零停機時間部署。

本文章首發(fā)在 LearnKu.com 網(wǎng)站上。