本章我們將了解CakePHP中的環境變數、常規設定、資料庫設定和郵件配置。
設定 CakePHP 預設自帶一個設定文件,我們可以依照自己的需求進行修改。為此,有一個專用資料夾 “config”。 CakePHP 具有不同的配置選項。
讓我們先從了解 CakePHP 中的環境變數開始。
環境變數使您的應用程式在不同環境下的工作變得容易。例如,在開發伺服器、測試伺服器、登台伺服器和生產伺服器環境上。對於所有這些環境,您可以使用 env() 函數 讀取所需環境的配置並建立您的應用程式。
在您的 config 資料夾中,您將看到 config/.env.example。該文件包含將根據您的環境進行更改的所有變數。首先,您可以在 config 資料夾中建立一個文件,即 config/.env 並定義這些變數並使用它們。如果您需要任何其他變量,可以將其放入該文件中。
您可以使用 env() 函數讀取環境變量,如下所示 -
$debug = env('APP_DEBUG', false);
第一個是您想要的環境變數的名稱,第二個值是預設值。如果沒有找到環境變數的值,則使用預設值。
下表描述了各種變數的作用以及它們如何影響您的 CakePHP 應用程式。
先生No | 變數名稱和描述 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
|
||||||||||||||||||||||||||||||
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目錄的網路路徑。 | ||||||||||||||||||||||||||||||
12 | App.paths 配置非基於類別的資源的路徑。支援外掛程式、範本、語言環境、子項目,它們允許分別定義外掛程式、視圖範本和語言環境文件的路徑。 | ||||||||||||||||||||||||||||||
13 | Security.salt 用於散列的隨機字串。在進行對稱加密時,該值也用作 HMAC salt。 | ||||||||||||||||||||||||||||||
14 | 資產.時間戳
使用正確的幫助程式時,在資產文件 URL(CSS、JavaScript、圖像)末尾附加一個時間戳,即特定文件的最後修改時間。有效值為 -
|
Host | The database server’s hostname (or IP address). |
---|---|
username | Database username |
password | Database password. |
database | Name of Database. |
Port | The TCP port or Unix socket used to connect to the server. |
'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'], ], ]
Let us understand each parameter in detail in config/app.php.
Sr.No | Key & Description |
---|---|
1 |
className The fully namespaced class name of the class that represents the connection to a database server. This class is responsible for loading the database driver, providing SQL transaction mechanisms and preparing SQL statements among other things. |
2 |
driver The class name of the driver used to implement all specificities for a database engine. This can either be a short classname using plugin syntax, a fully namespaced name, or a constructed driver instance. Examples of short classnames are Mysql, Sqlite, Postgres, and Sqlserver. |
3 |
persistent Whether or not to use a persistent connection to the database. |
4 |
encoding Indicates the character set to use, when sending SQL statements to the server like ‘utf8’ etc. |
5 |
timezone Server timezone to set. |
6 |
init A list of queries that should be sent to the database server as and when the connection is created. |
7 | log
log Set to true to enable query logging. When enabled queries will be logged at a debug level with the queriesLog scope. |
8 |
quoteIdentifiers Set to true, if you are using reserved words or special characters in your table or column names. Enabling this setting will result in queries built using the Query Builder having identifiers quoted when creating SQL. It decreases performance. |
9 |
flags An associative array of PDO constants that should be passed to the underlying PDO instance. |
10 |
cacheMetadata Either boolean true, or a string containing the cache configuration to store meta data in. Having metadata caching disable is not advised and can result in very poor performance. |
Email can be configured in file config/app.php. It is not required to define email configuration in config/app.php. Email can be used without it. Just use the respective methods to set all configurations separately or load an array of configs. Configuration for Email defaults is created using config() and configTransport().
By defining transports separately from delivery profiles, you can easily re-use transport configuration across multiple profiles. You can specify multiple configurations for production, development and testing. Each transport needs a className. Valid options are as follows −
Mail − Send using PHP mail function
Smtp − Send using SMTP
Debug − Do not send the email, just return the result
You can add custom transports (or override existing transports) by adding the appropriate file to src/Mailer/Transport. Transports should be named YourTransport.php, where 'Your' is the name of the transport.
Following is the example of Email configuration transport.
'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), ], ],
Delivery profiles allow you to predefine various properties about email messages from your application, and give the settings a name. This saves duplication across your application and makes maintenance and development easier. Each profile accepts a number of keys.
Following is an example of Email delivery profiles.
'Email' => [ 'default' => [ 'transport' => 'default', 'from' => 'you@localhost', ], ],
以上是CakePHP 專案配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!