composer 没有 bump 命令,因为其设计坚持“显式优于隐式”,不自动修改版本约束;提升 php 或扩展下限需手动编辑 composer.json 中 require 或 config.platform 字段,并运行 composer update --lock 或 composer check-platform-reqs 验证。

Composer 没有 bump 命令,运行 composer bump 必报错:Command "bump" is not defined. 所谓“自动提升基础版本号下限”,本质是修改 composer.json 中依赖项的版本约束(如把 "php": "^8.0" 改为 "php": "^8.1"),而非升级已安装的包——这必须手动或借助工具完成,不能靠 Composer 原生命令隐式处理。
为什么 composer bump 不存在且不该存在
Composer 的设计原则是「显式优于隐式」。它不自动修改任何版本约束,因为:
-
^8.0和^8.1表面只差一位数字,但可能跳过关键安全补丁或引入不兼容的内部 API 变更 - PHP 版本约束变动会连锁影响扩展加载(如
ext-gd在 8.1+ 的行为变更)、composer install能否通过、甚至 CI 环境是否失败 - 官方命令如
composer update只按现有约束拉取最新匹配版本,不会重写约束本身
真正能改 PHP 或扩展版本下限的操作方式
要提升项目对 PHP 或扩展的最低要求,只能直接编辑 composer.json 的 require 或 config.platform 字段:
- 改 PHP 版本下限:将
"php": "^8.0"替换为"php": "^8.1",然后运行composer update --lock(仅更新锁文件,不装包) - 锁定扩展版本(防 CI 漏检):在
config.platform下加"ext-gd": "8.1.0",避免因本地有高版本扩展而忽略兼容性问题 - 检查实际影响:运行
composer check-platform-reqs,它会比对当前环境与platform配置,立刻暴露缺失扩展或版本不符
用 composer require 也能间接实现,但有陷阱
虽然 composer require 主要用于添加包,但它可强制覆盖已有平台约束(需加 --no-update 避免触发解析):
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer require php:^8.1 --no-update会把php行重写进composer.json,且不校验当前环境是否满足 - 危险点:若你本地是 PHP 8.0,该命令仍会成功写入,但后续
composer install在其他机器上必然失败 - 安全做法:先在目标环境跑
php -v和php -m确认可用版本/扩展,再改约束
自动化脚本比插件更可控
第三方插件如 vinkla/composer-bump 或 symplify/composer-bump 全部只处理 composer.json 顶层的 version 字段(即你这个包自身的发布版本),对 require.php 这类平台约束完全无感。
真要批量调低容错、提升下限,推荐一行 jq:
jq --arg v "^8.1" '.require.php = $v' composer.json | sponge composer.json
比任何插件都轻量、可审计、无副作用。唯一前提:你得清楚自己为什么要升这个下限——不是为了“跟新”,而是确认所有开发者和 CI 环境已统一就绪。










