Composer 2.5+ 升级后必须重装官方脚本并配置支持哈希透传或签名验证的镜像,旧式代理镜像失效;self-update命令已移除,需用php安装脚本覆盖重装,并重生成composer.lock、清理vendor、修正项目级repositories配置。

Composer 2.5+ 升级后,镜像配置不是“换地址就行”,而是必须满足哈希透传或签名验证;self-update 命令已彻底移除,必须用官方安装脚本重装。
composer self-update 已失效,必须重装
执行 composer self-update 会直接报错:Command "self-update" is not defined。这不是环境问题,是 Composer 自 2.5.0 起主动移除了该命令——所有版本更新都必须通过官方 PHP 安装脚本覆盖二进制文件。
- 确认当前路径:
which composer(常见为/usr/local/bin/composer或/opt/homebrew/bin/composer) - 重装命令(Linux/macOS):
php -r"copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php --filename=composer --install-dir=/usr/local/bin/ && php -r"unlink('composer-setup.php');" - Homebrew 用户请把
--install-dir换成/opt/homebrew/bin/;用户级安装推荐--install-dir=$HOME/.local/bin并确保该路径在$PATH前置 - 重装后立刻执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,否则默认走慢速官方源
镜像必须支持哈希透传或签名验证
Composer 2.5+ 强制校验 provider-*.json 的 Content-SHA256 响应头或 .sig 签名文件。旧式代理镜像(如简单替换 URL 的 Nginx 反代)不再被信任,即使能 curl 通,也会在加载 provider 阶段中断并报 Invalid package information。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 阿里云镜像自 2025 年 Q3 起默认启用透传,直接配置即可:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 腾讯云需手动开启:
composer config -g repos.packagist.options.verify-signature true - 华为云、中科大等镜像若未明确声明支持透传或重签,建议暂避;可用
composer show laravel/framework -vvv 2>&1 | grep "provider"观察是否带Content-SHA256响应头 - URL 末尾斜杠和 HTTPS 协议必须一致,
https://mirrors.aliyun.com/composer(缺斜杠)会被视为无效地址
项目级 repositories 会完全屏蔽全局镜像
升级后,composer.json 中的 "repositories" 字段优先级高于全局配置,且会彻底禁用 repo.packagist 设置。很多老项目仍留着已停用的 https://packagist.phpcomposer.com,升级后直接卡死在 Loading composer repositories。
- 运行
composer config --list | grep repositories,确认输出中repositories.packagist.url是你期望的镜像地址 - 检查项目根目录
composer.json是否含"repositories"字段;若有,删掉或改成有效镜像,例如:{"repositories": [{"type":"composer", "url":"https://mirrors.aliyun.com/composer/"}]} - 团队共用该
composer.json时务必同步更新,否则 CI 构建会因镜像不可用而失败 - 临时验证镜像是否生效,可用
composer install --repository=https://mirrors.tuna.tsinghua.edu.cn/composer/绕过所有持久化配置
升级后必须重生成 lock 文件
Composer 2 使用全新求解器和锁文件哈希算法,旧 composer.lock 无法复用。强行保留会导致 composer install 报错 lock file is not up to date,或静默跳过 require-dev 工具链。
- 升级完成后立即执行:
rm composer.lock && rm -rf vendor && composer install - 操作前确保
composer.json已提交,避免版本约束丢失 - 插件兼容性是最大雷区:老插件(如
hirak/prestissimo、dealerdirect/phpcodesniffer-composer-installer)会直接失效,报错The plugin requires composer-plugin-api 1.1.0或Class 'Composer\Package\Version\VersionParser' not found - 解决方式只有两个:从
composer.json中移除该插件,或联系作者升级至支持composer-plugin-api^2.0+
最关键的细节往往藏在配置层级和锁文件重建上——镜像地址写对了,但没清 composer.lock,或者 composer.json 里还留着已失效的 repositories,都会让整个升级过程看起来成功,实则后续命令随时崩盘。

















