CakePHP 项目配置
在本章中,我们将了解 CakePHP 中的 环境变量、通用配置、数据库配置和 电子邮件配置。
配置 CakePHP 默认自带一个配置文件,我们可以根据需要进行修改。有一个专用文件夹 "config" 用于此目的。CakePHP 带有不同的配置选项。
让我们从了解 CakePHP 中的环境变量开始。
环境变量
环境变量使您的应用程序在不同环境中的工作变得容易。例如,在开发服务器、测试服务器、登台服务器和生产服务器环境上。对于所有这些环境,您可以使用 env() 函数来读取您需要的环境的配置并构建您的应用程序。
在你我们的 config 文件夹,你会遇到 config/.env.example。此文件包含将根据您的环境更改的所有变量。首先,您可以在 config 文件夹中创建一个文件,即 config/.env 并定义这些变量并使用它们。如果您需要任何其他变量,它可以放在该文件中。
您可以使用 env() 函数读取您的环境变量,如下所示:
示例
$debug = env('APP_DEBUG', false);
第一个是您想要的环境变量的名称,第二个值是默认值。如果没有找到环境变量的值,则使用默认值。
一般配置
下表描述了各种变量的作用以及它们如何影响您的 CakePHP 应用程序。
变量名称和描述 |
debug 更改 CakePHP 调试输出。 false = 生产模式。未显示错误消息、错误或警告。 true = 显示错误和警告。 |
App.namespace 在其下查找应用类的命名空间。 |
App.baseUrl 取消注释此定义,如果您不打算将 Apache 的 mod_rewrite 与 CakePHP 一起使用。不要忘记删除您的 .htaccess 文件。 |
App.base 应用所在的基本目录。如果为false,将自动检测。 |
App.encoding 定义您的应用程序使用的编码。此编码用于在布局中生成字符集,并对实体进行编码。它应该与为您的数据库指定的编码值相匹配。 |
App.webroot webroot 目录。 |
App.wwwRoot webroot 的文件路径。 |
App.fullBaseUrl 应用程序根目录的完全限定域名(包括协议)。 |
App.imageBaseUrl webroot 下公共图像目录的 Web 路径。 |
App.cssBaseUrl webroot 下公共 css 目录的 Web 路径。 |
App.jsBaseUrl webroot下公共js目录的Web路径。 |
App.paths 为非基于类的资源配置路径。支持 插件、模板、区域设置、子键,允许分别定义插件、视图模板和区域设置文件的路径。 |
Security.salt 用于散列的随机字符串。在进行对称加密时,此值也用作 HMAC 盐。 |
Asset.timestamp 在资产文件 URL(CSS、JavaScript、图像)的末尾附加一个时间戳,这是特定文件的最后修改时间使用适当的助手时。有效值为-
|
数据库配置
数据库可以在 config/app.php 和config/app_local.php 文件中配置。该文件包含一个带有提供参数的默认连接,可以根据我们的选择进行修改。
以下代码段显示了默认参数和值,应根据要求对其进行修改。
配置/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中的每个参数。
键和描述 |
className 代表与数据库服务器的连接的类的完全命名空间类名。该类负责加载数据库驱动、提供SQL事务机制和准备SQL语句等。 |
driver 用于实现数据库引擎所有特性的驱动程序的类名。这可以是使用插件语法的短类名、完全命名空间的名称或构造的驱动程序实例。短类名的示例包括 Mysql、Sqlite、Postgres 和 Sqlserver。 |
persistent 是否使用与数据库的持久连接。 |
encoding 表示在向服务器发送 SQL 语句(如‘utf8’等)时使用的字符集 |
timezone 要设置的服务器时区。 |
init 在创建连接时应发送到数据库服务器的查询列表。 |
log 设置为 true 以启用查询日志记录。启用查询后,将在具有查询日志范围的调试级别记录。 |
quoteIdentifiers 如果您在表名或列名中使用保留字或特殊字符,则设置为 true。启用此设置将导致使用查询生成器构建的查询在创建 SQL 时引用标识符。它会降低性能。 |
flags 应该传递给底层 PDO 实例的 PDO 常量的关联数组。 |
cacheMetadata 布尔值 true,或包含存储元数据的缓存配置的字符串。不建议禁用元数据缓存,这可能会导致非常表现不佳。 |
电子邮件配置
电子邮件可以在文件 config/app.php 中配置。不需要在 config/app.php 中定义电子邮件配置。没有它也可以使用电子邮件。只需使用相应的方法分别设置所有配置或加载一组配置。电子邮件默认配置是使用 config() 和 configTransport() 创建的。
电子邮件配置传输
通过将传输与交付配置文件分开定义,您可以轻松地跨多个配置文件重复使用传输配置。您可以为生产、开发和测试指定多种配置。每个传输都需要一个类名。有效选项如下:
- Mail-使用 PHP 邮件功能发送
- 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', ], ],
下一章:CakePHP 路由
在本章中,我们将学习以下与路由相关的主题:路由简介连接路线将参数传递给路由生成网址重定向网址 路由简介在本节中,我们将了解如何实现路由、如何将参数从 URL 传递到控制器的操作、如何生成 URL ...