CakePHP - 项目配置


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

配置CakePHP默认自带一个配置文件,我们可以根据自己的需要进行修改。有一个专用文件夹“config”用于此目的。CakePHP 带有不同的配置选项。

让我们首先了解 CakePHP 中的环境变量。

环境变量

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

在您的 config 文件夹中,您将看到 config/.env.example。该文件包含将根据您的环境进行更改的所有变量。首先,您可以在配置文件夹中创建一个文件,即 config/.env 并定义这些变量并使用它们。如果您需要任何其他变量,可以将其放入该文件中。

您可以使用 env() 函数读取环境变量,如下所示 -

例子

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

第一个是您想要的环境变量的名称,第二个值是默认值。如果没有找到环境变量的值,则使用默认值。

总体配置

下表描述了各种变量的作用以及它们如何影响您的 CakePHP 应用程序。

先生编号 变量名称和描述
1

调试

更改 CakePHP 调试输出。

false = 生产模式。不显示任何错误消息、错误或警告。

true = 显示错误和警告。

2

应用程序命名空间

用于在其下查找应用程序类的命名空间。

3

应用程序基址

如果您不打算将 Apache 的 mod_rewrite 与 CakePHP 一起使用,请取消注释此定义。不要忘记也删除您的 .htaccess 文件。

4

应用程序库

应用程序所在的基本目录。如果为 false,则会自动检测到。

5

应用程序编码

定义您的应用程序使用的编码。此编码用于生成布局中的字符集并对实体进行编码。它应该与为您的数据库指定的编码值匹配。

6

应用程序.webroot

网络根目录。

7

应用程序.www根目录

Webroot 的文件路径。

8

应用程序.fullBaseUrl

应用程序根目录的完全限定域名(包括协议)。

9

应用程序.imageBaseUrl

webroot 下公共图像目录的 Web 路径。

10

应用程序.cssBaseUrl

webroot 下公共 css 目录的 Web 路径。

11

App.jsBaseUrl

webroot 下公共 js 目录的 Web 路径。

12

应用程序路径

为非基于类的资源配置路径。支持插件、模板、语言环境、子项,允许分别定义插件、视图模板和语言环境文件的路径。

13

安全盐

用于散列的随机字符串。在进行对称加密时,该值也用作 HMAC salt。

14

资产时间戳

使用正确的帮助程序时,在资产文件 URL(CSS、JavaScript、图像)末尾附加一个时间戳,即特定文件的上次修改时间。有效值为 -

  • (bool) false - 不执行任何操作(默认)。

  • (bool) true - 当 debug 为 true 时附加时间戳。

  • (字符串)'force' - 始终附加时间戳。

数据库配置

数据库可以在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中的每个参数。

主持人

数据库服务器的主机名(或 IP 地址)。

用户名

数据库用户名

密码

数据库密码。

数据库

数据库名称。

港口

用于连接到服务器的 TCP 端口或 Unix 套接字。

配置/应用程序.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

班级名称

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

2

司机

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

3

执着的

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

4

编码

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

5

时区

要设置的服务器时区。

6

在里面

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

7

日志

设置为 true 以启用查询日志记录。启用后,查询将在查询日志范围内以调试级别记录。

8

引用标识符

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

9

旗帜

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

10

缓存元数据

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

电子邮件配置

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

电子邮件配置传输

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

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

  • Smtp - 使用 SMTP 发送

  • 调试- 不发送电子邮件,仅返回结果

您可以通过将适当的文件添加到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',
   ],
],