CakePHP - 專案配置



本章將講解CakePHP中的環境變數、常規配置、資料庫配置郵箱配置

配置 CakePHP預設帶有一個配置檔案,我們可以根據需要修改它。“config”資料夾專門用於此目的。CakePHP提供了不同的配置選項。

讓我們首先了解CakePHP中的環境變數。

環境變數

環境變數使您的應用程式在不同環境(例如開發伺服器、測試伺服器、預釋出伺服器和生產伺服器環境)中的執行變得容易。對於所有這些環境,您可以使用env()函式讀取您需要的環境配置並構建您的應用程式。

在您的config資料夾中,您會看到config/.env.example。此檔案包含所有將根據您的環境而變化的變數。首先,您可以在config資料夾中建立一個檔案,例如config/.env,並定義這些變數並使用它們。如果您需要任何其他變數,可以將其新增到該檔案中。

您可以使用env()函式讀取您的環境變數,如下所示:

示例

$debug = env('APP_DEBUG', false);

第一個值是您想要的環境變數的名稱,第二個值是預設值。如果找不到環境變數的值,則使用預設值。

常規配置

下表描述了各個變數的作用以及它們如何影響您的CakePHP應用程式。

序號 變數名稱及描述
1

debug

更改CakePHP除錯輸出。

false = 生產模式。不顯示錯誤訊息、錯誤或警告。

true = 顯示錯誤和警告。

2

App.namespace

查詢應用程式類所在的名稱空間。

3

App.baseUrl

如果您不打算將Apache的mod_rewrite與CakePHP一起使用,請取消此定義的註釋。也不要忘記刪除您的.htaccess檔案。

4

App.base

應用程式所在的基目錄。如果為false,則將自動檢測。

5

App.encoding

定義您的應用程式使用的編碼。此編碼用於在佈局中生成字元集和編碼實體。它應與為資料庫指定的編碼值匹配。

6

App.webroot

webroot目錄。

7

App.wwwRoot

webroot的檔案路徑。

8

App.fullBaseUrl

應用程式根目錄的完全限定域名(包括協議)。

9

App.imageBaseUrl

webroot下公共影像目錄的Web路徑。

10

App.cssBaseUrl

webroot下公共css目錄的Web路徑。

11

App.jsBaseUrl

webroot下公共js目錄的Web路徑。

12

App.paths

配置非基於類的資源的路徑。支援plugins、templates、locales、subkeys,分別允許定義外掛、檢視模板和語言檔案的路徑。

13

Security.salt

雜湊中使用的隨機字串。此值在進行對稱加密時也用作HMAC金鑰。

14

Asset.timestamp

在使用適當的助手時,將時間戳(特定檔案的上次修改時間)附加到資原始檔URL(CSS、JavaScript、影像)的末尾。有效值為:

  • (bool) false - 不執行任何操作(預設)。

  • (bool) true - 當debug為true時附加時間戳。

  • (string) ‘force’ - 始終附加時間戳。

資料庫配置

資料庫可以在config/app.php和config/app_local.php檔案中配置。此檔案包含一個帶有提供引數的預設連線,可以根據我們的選擇進行修改。

以下程式碼片段顯示了預設引數和值,應根據需要進行修改。

Config/app_local.php

*/
   'Datasources' => [
      'default' => [
         'host' => 'localhost',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'my_app',
         'url' => env('DATABASE_URL', null),
      ],
      /*
         * The test connection is used during the test suite.
      */
      'test' => [
         'host' => 'localhost',
         //'port' => 'non_standard_port_number',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'test_myapp',
         //'schema' => 'myapp',
      ],
   ],

讓我們詳細瞭解config/app_local.php中的每個引數。

Host

資料庫伺服器的主機名(或IP地址)。

username

資料庫使用者名稱

password

資料庫密碼。

database

資料庫名稱。

Port

用於連線到伺服器的TCP埠或Unix套接字。

config/app.php

'Datasources' => [
   'default' => [
      'className' => Connection::class,
      'driver' => Mysql::class,
      'persistent' => false,
      'timezone' => 'UTC',
      //'encoding' => 'utf8mb4',
      'flags' => [],
      'cacheMetadata' => true,
      'log' => false,
      'quoteIdentifiers' => false,
      //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
   ],
]   

讓我們詳細瞭解config/app.php中的每個引數。

log
序號 鍵值及描述
1

className

表示與資料庫伺服器連線的類的完全名稱空間類名。此類負責載入資料庫驅動程式,提供SQL事務機制和準備SQL語句等。

2

driver

用於實現資料庫引擎所有特性的驅動程式的類名。這可以是使用外掛語法的簡短類名、完全限定名稱或構造的驅動程式例項。簡短類名的示例包括Mysql、Sqlite、Postgres和Sqlserver。

3

persistent

是否使用與資料庫的持久連線。

4

encoding

指示在將SQL語句傳送到伺服器時使用的字元集,例如“utf8”等。

5

timezone

要設定的伺服器時區。

6

init

建立連線時應傳送到資料庫伺服器的一系列查詢。

7

log

設定為true以啟用查詢日誌記錄。啟用後,查詢將使用queriesLog範圍以除錯級別記錄。

8

quoteIdentifiers

如果您在表名或列名中使用保留字或特殊字元,則設定為true。啟用此設定將導致使用查詢構建器構建的查詢在建立SQL時帶有引號的識別符號。它會降低效能。

9

flags

應傳遞給底層PDO例項的PDO常量的關聯陣列。

10

cacheMetadata

布林值true,或包含要儲存元資料的快取配置的字串。不建議停用元資料快取,這可能會導致效能非常差。

郵箱配置

郵箱可以在config/app.php檔案中配置。不需要在config/app.php中定義郵箱配置。無需配置即可使用郵箱。只需使用相應的方法分別設定所有配置或載入配置陣列即可。郵箱預設配置是使用config()configTransport()建立的。

郵箱配置傳輸

透過將傳輸與傳遞配置檔案分開定義,您可以輕鬆地在多個配置檔案中重複使用傳輸配置。您可以為生產、開發和測試指定多個配置。每個傳輸都需要一個className。有效選項如下:

  • Mail - 使用PHP mail函式傳送

  • Smtp - 使用SMTP傳送

  • Debug - 不要傳送郵件,只返回結果

您可以透過將相應的檔案新增到src/Mailer/Transport來新增自定義傳輸(或覆蓋現有傳輸)。傳輸應命名為YourTransport.php,其中“Your”是傳輸的名稱。

以下是郵箱配置傳輸的示例。

'EmailTransport' => [
   'default' => [
      'className' => 'Mail',
      // The following keys are used in SMTP transports
      'host' => 'localhost',
      'port' => 25,
      'timeout' => 30,
      'username' => 'user',
      'password' => 'secret',
      'client' => null,
      'tls' => null,
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
   ],
],

郵箱傳遞配置檔案

傳遞配置檔案允許您預定義有關應用程式中電子郵件訊息的各種屬性,併為設定命名。這節省了應用程式中的重複工作,並使維護和開發更容易。每個配置檔案都接受多個鍵。

以下是郵箱傳遞配置檔案的示例。

'Email' => [
   'default' => [
   
      'transport' => 'default',
      'from' => 'you@localhost',
   ],
],
廣告
© . All rights reserved.