执行 composer self-update --preview 仅升级当前主版本内的已发布 rc/beta 版(如 2.5.12→2.6.0-rc1),需通过 composer --version 检查输出是否含 -rc 或 -beta 后缀确认生效,否则可能因未发布、网络失败或包管理器限制而静默失败。

执行 composer self-update --preview 不等于“自动升到最新预览版”,它只在当前主版本通道内找已发布的 RC / beta 版本(比如从 2.5.12 升到 2.6.0-RC1),若该版本尚未发布或网络卡住,命令会静默失败——你看到的仍是旧版本。
怎么确认 --preview 真生效了
别信终端输出的 “Updated”,重点看 composer --version 输出末尾是否含 -RC、-beta 或类似后缀。如果还是 2.7.7 这种纯数字格式,说明没升上去。
- 加
-vvv参数重试:composer self-update --preview -vvv,观察日志里有没有Downloading https://getcomposer.org/download/2.6.0-RC1/composer.phar这类明确 URL - 若卡在
Resolving dependencies或报Connection timed out,大概率是直连getcomposer.org失败,不是命令问题 - 系统包管理器安装的(如
dnf install composer)通常禁用self-update,此时--preview无效,得换镜像源手动下载或改用sudo dnf update composer(但后者不会装预览版)
为什么 --preview 后项目突然出错
预览版对环境和依赖链很敏感,几个常见断点:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- PHP 版本低于 8.0:Composer 2.6+ 已移除 PHP 7.x 兼容层,
vendor/autoload.php初始化阶段就会 fatal error - 用了已废弃插件:比如
fxp/composer-asset-plugin,它的钩子函数在 2.6-RC 中被静默移除,composer install可能无声跳过 asset 安装 - 私有仓库配置没按新规则写:必须用数组形式声明
repositories,且把私有源放第一位,否则 canonical 机制会让 Packagist 的高版本覆盖你自己的同名包
--preview 和 --snapshot 别混用
--preview 拉的是带版本号的预发布版(如 2.7.0-RC2),有 changelog、相对可控;--snapshot 拉的是无版本号的每日构建快照(如 2.7-dev+20260525),可能含未合入主干的实验性改动。
- CI/CD 流水线里写
composer self-update --snapshot等于主动引入不可控变量,某天构建突然失败,排查点会卡在 Composer 自身而非你的代码 - 验证新 CLI 参数或修复你正遇到的 bug,优先选
--preview;想测最前沿变动才用--snapshot - 出问题第一反应不是重装,而是降级:
composer self-update --stable立刻切回当前主版本最新稳定版;如果连这个都失败,composer self-update --rollback是唯一兜底方式
预览版不是“多按一次回车就升级”,它不改 lock 文件格式,但会悄悄改变依赖解析行为、插件加载时机和平台校验逻辑——哪怕只是多一个 class_exists(InstalledVersions::class) 判断,漏掉就直接 fatal error。










