当前位置: 首页 > news >正文

Composer Deprecation Notice 警告:为什么会出现?如何解决?

在使用 Composer 进行 PHP 项目管理时,你可能遇到过类似这样的 Deprecation Notice 警告信息。这些警告通常看起来令人困惑,但它们背后有着清晰的原因。

Deprecation Notice: Composer\Autoload\ClassMapGenerator::createMap(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar://C:/composer/composer.phar/src/Composer/Autoload/ClassMapGenerator.php:64
Deprecation Notice: Composer\Autoload\PhpFileCleaner::match(): Implicitly marking parameter $match as nullable is deprecated, the explicit nullable type must be used instead in phar://C:/composer/composer.phar/src/Composer/Autoload/PhpFileCleaner.php:273

1. 为什么会出现这些警告?

这些警告信息并非错误,而是 PHP 8.0+ 在类型检查方面变得更加严格所导致的。主要原因有两个:

  • PHP 8.0+ 的严格类型检查:Composer 2.x 的部分旧代码最初是为 PHP 7.x 编写的。在 PHP 7 中,如果一个函数的参数没有显式声明为可空类型(?Type),但又在某些情况下被赋予了 null 值,PHP 仍能正常运行。然而,在 PHP 8.0+ 中,这种隐式可空参数会触发 Deprecation Notice 警告,要求开发者明确地使用 ? 符号来标注参数可能为 null 的可能性。

  • 你使用了旧版本或强制降级:如果你通过 composer self-update --2.2 等命令强制降级到 Composer 2.2.x 版本,你就会遇到这个问题。这个版本的代码没有完全适配 PHP 8.0+ 的严格规则,因此警告会大量出现。而 Composer 的最新稳定版(如 2.8.12)已经修复了这些问题。

此外,Composer 内部依赖的一些库,比如 justinrainbow/json-schema,也存在类似的问题。这些库的弃用警告也会被 Composer 透传出来,让你以为是 Composer 本身的问题。

2. 如何解决这些警告?

解决这个问题的方法主要分为两种:治本和治标。

方法一:升级到最新稳定版(强烈推荐)

这是解决问题的最根本、最长久的方法。

composer self-update --stable

这条命令会安装 Composer 的最新稳定版本( 2.8.12),这个版本的所有弃用警告都已经得到了修复。这样做可以一劳永逸地解决兼容性问题,并获得新版本带来的性能提升和功能优化。

注意: 2.8.12 Changelog

修复了与版本验证相关的 JSON Schema 问题(#12512)
修复了 PHP 8.5 的弃用警告问题(#12513)
修复了对 Bitbucket API 令牌的支持问题(#12515)
修复了使用二进制文件时路径中包含空格的处理问题(#12524)
修复了 config --global 路径解析问题(#12537)
降低了加载包时的峰值内存使用量(#12516)
不再支持 react/promise 2.x 版本

方法二:临时忽略弃用警告

如果你的项目出于某种原因(例如遗留系统兼容性),无法升级 Composer,你可以临时抑制这些警告。

COMPOSER_NO_DEPRECATION_WARNINGS=1 composer update

通过设置 COMPOSER_NO_DEPRECATION_WARNINGS 环境变量为 1,你可以只对当前命令生效,让 Composer 忽略所有弃用警告。但要注意,这只是一个临时方案,不建议长期使用。

3. 为什么升级时提示 2.2.25 而非最新版?

你可能会遇到这样的提示,没有遇到请忽略

Warning: You forced the install of 2.2.25 via --2.2, but 2.8.12 is the latest stable version.

这说明你使用了 --2.2 参数强制 Composer 仅在 2.2.x 分支内进行更新,因此它找到了该分支的最新版本 2.2.25。然而,系统检测到最新的稳定版是 2.8.12,因此给出了升级建议。除非你有非常特殊的需求,否则直接使用方法一才是最正确的做法。

http://www.dtcms.com/a/398946.html

相关文章:

  • Python 中常用的数据分析绘图库解析
  • 甜点网站里的新闻资讯怎么做如何做国际网站
  • 怎么知道Redis 6+ 是否启用 ACL
  • three.js ——文字
  • 中山市智能h5网站建设公司wordpress电视剧
  • 个人网站域名一级a做爰片免费网站黄
  • mac m4电脑运行 LLaMA Factory 微调
  • 基于Python的二手房价格数据分析预测系统
  • 【速成】快速掌握CMD
  • 网站建设找哪个网盟官方网站
  • NCL数据分析与处理实践技术应用
  • 莱阳 网站建设商城前端模板
  • 【APK安全】Receiver嗅探:Android广播组件的权限与UID安全防护及测试指南
  • (自用)vim的高级命令
  • ELK分析系统详解
  • 架构师成长之路06:缓存设计收官篇,缓存该放哪?写缓存怎么用?这篇讲透最后两个核心问题
  • 电子商务网站建设外包服务wordpress 教程
  • 简述Android应用程序结构包含哪些部分
  • 百度网站改版提交wordpress主题改中文版
  • 前端埋点(tracking)技术介绍(记录用户行为和页面性能数据)(埋点代码)ajax埋点、img埋点、navigator.sendBeacon埋点
  • 网站备案ps网站建设入门教程视频教程
  • 免费申请网站永久域名建设一个网站用什么软件下载
  • 内存泄漏可能由哪些原因导致?
  • 数据采集与同步
  • Weblogic T3 CVE-2018-2628漏洞复现
  • Spring Cloud Alibaba快速入门-Sentinel熔断规则
  • TDEngine-OSS-3.3.7.5开源版搭建手册(包含单节点与三副本高可用方案搭建)
  • 【强化学习】解决MPE环境中两个小球重合导致态势为nan问题
  • 建教会网站的内容部门网站建设个人总结
  • 陕西省建设监理协会网站证书关于网站开发的外文书籍