Composer Deprecation Notice 是 Composer 执行命令时发出的弃用警告,提示包、配置或功能将被移除;常见于 autoload 方式过时、composer.json 字段错误、插件调用废弃 API 或 PHP 版本写法不规范等场景;虽不中断执行,但需及时处理以防升级后报错或兼容问题。

Composer Deprecation Notice 是 Composer 在执行命令(如 composer install、composer update)时输出的一类提示信息,用于告知你:当前项目中使用的某个包、某个配置项、某段代码或某个 Composer 功能,已被官方标记为“不推荐使用”,未来版本中可能被移除。
它通常出现在什么场景?
常见来源包括:
- 你依赖的某个第三方包在
composer.json中声明了已弃用的 autoload 方式(比如用psr-0而非psr-4) - 项目根目录的
composer.json使用了过时字段(如require-dev写成require-devs,或用了已被废弃的脚本钩子名) - 你安装的某个包自身在
composer.json或安装脚本中调用了 Composer 内部已弃用的 API(例如旧版插件机制) - PHP 版本或扩展要求写法不符合新规范(如
"php": ">=7.4.0"被建议改为"php": "^7.4 || ^8.0")
需要立即处理吗?
不需要紧急中断开发,但也不应忽略。它的本质是“预警”,不是错误(不会导致命令失败),但放任不管可能带来后续风险:
- 下次升级 Composer(尤其是大版本,如 2.x → 3.x)时,这些弃用项可能变成硬性报错,导致无法安装或更新依赖
- 所依赖的包若长期不更新,可能在 PHP 新版本上彻底失效(比如弃用的 autoloading 方式在 PHP 8.3+ 中被底层限制)
- 团队协作中,不同成员 Composer 版本不一致,有人看到警告、有人看不到,容易埋下隐患
怎么快速定位和解决?
关键看提示里的具体路径和描述:
- 如果提示指向你自己的
composer.json,打开它,对照 Composer 官方文档的 schema 参考 检查字段是否合规 - 如果提示来自某个 vendor 包(如
monolog/monolog),先运行composer show monolog/monolog查看其当前版本,再查该包的 CHANGELOG 或 GitHub Issues,确认是否已有修复版本;有则升级:composer update monolog/monolog - 启用更详细日志辅助判断:
composer update -v(verbose 模式)可显示触发警告的具体文件和行号
可以暂时隐藏吗?
技术上可以加 --no-deprecations 参数屏蔽,但不建议作为长期方案。这相当于关掉仪表盘警报灯——问题还在,只是你看不见。尤其 CI/CD 流水线中隐藏警告,可能让问题在上线前才暴露。
它不是故障,但值得花 10 分钟理清来源;越早清理,后续迁移成本越低。










