版本 4.6.2

发布日期:2025 年 7 月 26 日

CodeIgniter4 的 4.6.2 版本发布

安全更新

变更内容

  • Security: Security 辅助函数的 sanitize_filename() 函数现在支持第二个参数来控制是否允许相对路径。

废弃功能

  • Security: Security::sanitizeFilename() 方法已废弃。请使用 sanitize_filename() 代替。

  • Security: SecurityInterface::sanitizeFilename() 方法已废弃。

错误修复

  • Cache: 修复了损坏或不可读的缓存文件可能在 FileHandler::getItem() 中引发未处理异常的错误。

  • Commands: 修复了 make:test 在 Windows 上总是出错的错误。

  • Commands: 修复了 make:test 生成的测试文件不以 Test.php 结尾的错误。

  • Commands: 修复了 make:test 在未输入类名后输入提示会显示三次的错误。

  • CURLRequest: 修复了在某些情况下中间 HTTP 响应未从响应链中正确移除的错误,该错误会导致返回不正确的状态码和标头而非最终响应。

  • Database: 修复了 ConditionalTrait 中的 when()whenNot() 错误地将某些假值(如 []00.0'0')评估为真值的错误,导致回调被意外执行。这些方法现在使用 (bool) 将条件转换为布尔值,以确保与 PHP 原生真值性的一致行为。

  • Database: 修复了 BasePreparedQuery 在访问 BaseConnection::transStatus 受保护属性时的封装违规问题。

  • DownloadResponse: 修复了使用内联处置时 Content-Disposition 标头中缺少 filename 参数的错误,该错误会导致浏览器使用 URL 的最后一段作为文件名而不是预期的文件名。

  • Email: 修复了当 $_SERVER['SERVER_NAME'] 未设置时 Email::getHostname() 无法使用 $_SERVER['SERVER_ADDR'] 的错误。

  • Security: 修复了 Security 辅助函数的 sanitize_filename() 函数在 CLI 请求中使用时会抛出错误的问题。

  • Session: 修复了对不受支持的数据库驱动程序(如 SQLSRVOCI8SQLite3)使用 DatabaseHandler 时未抛出适当错误的问题。

  • SiteURI: 修复了 SiteURIFactory::parseRequestURI() 中在使用 mod_rewrite 从子文件夹提供应用程序服务同时保留 index.php 文件时会导致错误路由路径检测的错误。

  • SiteURI: 修复了 SiteURIFactory::parseRequestURI() 中当应用程序从子文件夹提供服务时包含多字节(非 ASCII)字符的文件夹名称无法正确解析的错误。

  • URI: 修复了 URI::getAuthority() 中没有定义默认端口的方案(如 rtsp://)由于缺少数组键处理而导致问题的错误。

请参阅仓库的 CHANGELOG.md 获取已修复错误的完整列表。