CakePHP 项目配置


在本章中,我们将了解 CakePHP 的环境变量、通用配置、数据库配置电子邮件配置

CakePHP 的“config”文件夹中默认自带一个配置文件,让我们从了解 CakePHP 中的环境变量开始。

环境变量


环境变量使应用在不同环境中的工作变得容易,例如,在开发服务器、测试服务器、预发布服务器和生产服务器环境上使用不同的配置。对于所有这些环境,可以使用env() 函数读取需要的环境配置并构建应用。

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的每个参数:

序号键和说明
1

className

表示与数据库服务器的连接的类的完全命名空间类名。该类负责加载数据库驱动程序、提供 SQL 事务机制和准备 SQL 语句等。

2

driver

用于实现数据库引擎所有特性的驱动程序的类名。这可以是使用插件语法的短类名、完全命名空间的名称或构造的驱动程序实例。短类名的例子有 Mysql、Sqlite、Postgres 和 Sqlserver。

3

persistent

是否使用到数据库的持久连接。

4

encoding

指示在向服务器发送 SQL 语句(如“utf8”等)时要使用的字符集。

5

timezone

要设置的服务器时区。

6

init

创建连接时应发送到数据库服务器的查询列表。

7

log

设置为 true 以启用查询日志记录。启用查询时,将在具有查询日志范围的调试级别记录。

8

quoteIdentifiers

如果在表名或列名中使用保留字或特殊字符,则设置为 true。启用此设置将导致使用查询生成器构建的查询在创建 SQL 时引用标识符。它会降低性能。

9

flags

应该传递给底层 PDO 实例的 PDO 常量的关联数组。

10

cacheMetadata

布尔值 true 或包含用于存储元数据的缓存配置的字符串。不建议禁用元数据缓存,这会导致性能非常差。

电子邮件配置


电子邮件可以在config/app.php文件中配置,但不是必要的,没有它也可以使用电子邮件,只需使用相应的方法分别设置所有配置或加载一组配置。电子邮件默认的配置是使用config()configTransport()创建的。

电子邮件配置传输

通过将传输与交付配置文件分开定义,可以轻松地跨多个配置文件重复使用传输配置,可以为生产、开发和测试指定多种配置,每个传输都需要一个类名。有效选项如下:

  • Mail: 使用PHP邮件功能发送

  • Smtp: 使用SMTP发送

  • Debug: 不发邮件,只返回结果

可以通过在 src/Mailer/Transport 中添加相应的文件来添加自定义的传输工具(或者覆盖现有的传输工具),传输文件应该命名为YourTransport.php,其中 "Your "是运输工具的名称。

以下是电子邮件配置传输的例子:

'EmailTransport' => [
    'default' => [
        'className' => 'Mail',
        // 以下键用于 SMTP 传输
        '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',
    ],
],