- CakePHP 教程
- CakePHP - 首页
- CakePHP - 概述
- CakePHP - 安装
- CakePHP - 文件夹结构
- CakePHP - 项目配置
- CakePHP - 路由
- CakePHP - 控制器
- CakePHP - 视图
- CakePHP - 扩展视图
- CakePHP - 视图元素
- CakePHP - 视图事件
- CakePHP - 数据库操作
- CakePHP - 查看记录
- CakePHP - 更新记录
- CakePHP - 删除记录
- CakePHP - 服务
- CakePHP - 错误和异常处理
- CakePHP - 日志记录
- CakePHP - 表单处理
- CakePHP - 国际化
- CakePHP - 会话管理
- CakePHP - Cookie 管理
- CakePHP - 安全
- CakePHP - 验证
- CakePHP - 创建验证器
- CakePHP - 分页
- CakePHP - 日期和时间
- CakePHP - 文件上传
- CakePHP 有用资源
- CakePHP - 快速指南
- CakePHP - 有用资源
- CakePHP - 讨论
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、图像)的末尾。有效值为:
|
数据库配置
数据库可以在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中的每个参数。
| 序号 | 键值及描述 |
|---|---|
| 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',
],
],