从 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 解码。
备注
请注意,路由 处理的是已 URL 解码的 URI 路径。
Config\Filters 中有多个位置可用于指定 URI 路径。如果这些路径在 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 小时的时段,可能会返回不符合预期的结果。详情参见 时间与日期中的说明。
该问题已修复,因此在这种情况下,日期比较结果现在会相差一天。
如果你确实需要保持旧版本的行为(这种情况较少见),请在将日期传递给 Time::difference() 之前,将参与比较的两个时间都转换为 UTC 时区。
项目文件
项目空间 (根目录、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