从 4.4.6 升级到 4.4.7

请参阅与你的安装方法对应的升级说明。

强制文件更改

URI 安全性

添加了检查 URI 中不包含不允许的字符串的功能。 此检查等同于 CodeIgniter 3 中的 URI 安全性。

我们建议你启用此功能。在 app/Config/App.php 文件中添加以下内容:

public string $permittedURIChars = 'a-z 0-9~%.:_\-';.

详情请参阅 URI 安全性

错误文件

错误页面已更新。请更新以下文件:

  • app/Views/errors/html/debug.css

  • app/Views/errors/html/error_exception.php

重大变更

控制器过滤器中的路径

已修复 控制器过滤器 处理的 URI 路径未进行 URL 解码的错误。

备注

请注意 Router 处理 URL 解码后的 URI 路径。

Config\Filters 中有一些地方可以指定 URI 路径。如果路径在 URL 解码后有不同的值,请将它们更改为 URL 解码后的值。

例如:

public array $globals = [
    'before' => [
        'csrf' => ['except' => '%E6%97%A5%E6%9C%AC%E8%AA%9E/*'],
    ],
    // ...
];

public array $globals = [
    'before' => [
        'csrf' => ['except' => '日本語/*'],
    ],
    // ...
];

Time::difference() 和夏令时

在以前的版本中,当使用 Time::difference() 比较日期时,如果由于夏令时 (DST) 导致日期包含不同于 24 小时的一天,则会返回意外结果。详情请参阅 Times and Dates 中的备注

此错误已修复,因此在这种情况下,日期比较将被移后一日。

在某些不太可能的情况下,如果你希望保持以前版本的行为,请在将要比较的两个日期传递给 Time::difference() 之前,将它们的时区更改为 UTC。

项目文件

项目空间 (root, app, public, writable)中的一些文件收到了更新。由于这些文件位于 system 范围之外,没有你的干预它们不会被更改。

有一些第三方的 CodeIgniter 模块可以帮助合并对项目空间的更改:在 Packagist 上探索

内容变更

以下文件进行了重要更改(包括弃用或视觉调整),建议你将更新的版本与应用程序合并:

配置

  • app/Config/App.php
    • 添加了属性 $permittedURIChars。详情请参阅 URI 安全性

所有更改

这是一个 项目空间 内所有收到更改的文件列表; 许多将只是简单的注释或格式更改,对运行时没有影响:

  • app/Config/App.php

  • app/Config/Cache.php

  • app/Config/ContentSecurityPolicy.php

  • app/Config/Database.php

  • app/Config/Exceptions.php

  • app/Config/Filters.php

  • app/Config/Format.php

  • app/Config/Logger.php

  • app/Config/Mimes.php

  • app/Config/Routing.php

  • app/Config/Toolbar.php

  • app/Config/Validation.php

  • app/Config/View.php

  • app/Controllers/BaseController.php

  • app/Views/errors/html/debug.css

  • app/Views/errors/html/error_exception.php

  • composer.json