Composer 2.5.0+ 已彻底移除 self-update 命令,升级必须通过官方安装脚本覆盖重装;镜像配置须严格使用 repositories.packagist.org 键名,且需执行 composer clear-cache 并通过 -vvv 日志验证真实请求域名。

Composer 2.5.0+ 已彻底移除 self-update 命令,升级必须重装;镜像配置不会保留,且键名、格式、缓存三者任一出错都会静默失效——不是“配错了”,而是根本没被读取。
重装 Composer 是唯一合法升级路径
执行 composer self-update 只会报错 Command "self-update" is not defined。必须用官方安装脚本覆盖重装:
- 下载安装器:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 校验 SHA-384(2026 年最新值):
php -r "echo hash_file('sha384', 'composer-setup.php');",比对官网公布的795f976fe0ebd8b75f26a6dd68f78fd3453ce79f32ecb33e7fd087d39bfeb978342fb73ac986cd4f54edd0dc902601dc - 安装到系统路径:
php composer-setup.php --install-dir=/usr/local/bin --filename=composer(Linux/macOS),或指向C:\ProgramData\ComposerSetup\bin\(Windows) - 刷新 shell:Linux/macOS 运行
hash -r;Windows 必须新开 PowerShell/CMD 窗口
全局镜像必须用 repositories.packagist.org 键名
Composer 2.2+ 对键名更严格,repo.packagist 在部分场景下会被静默忽略。唯一稳定写法是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 阿里云:
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}'(Linux/macOS 单引号包裹) - PowerShell 中需转义:
composer config -g repositories.packagist.org "{`"type`": `"composer`", `"url`": `"https://mirrors.aliyun.com/composer/`"}" - 腾讯云(带 fallback):
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"}' - 执行后必须立刻运行
composer clear-cache,否则旧元数据仍生效
验证镜像是否真生效,只看 -vvv 日志里的域名
别信 composer config -g repositories.packagist.org 的输出是否“看起来对”,它可能显示成功但实际未被读取。真实请求地址只能靠日志确认:
- 运行:
composer show monolog/monolog -vvv 2>&1 | grep "Downloading" - 观察输出中 URL 的域名:
mirrors.aliyun.com出现才算真正走镜像;若仍是packagist.org,说明配置无效 - 注意:CI 流水线(如 GitHub Actions)默认不读全局配置,需在项目根目录执行无
-g的命令,并提交composer.json
项目级配置正在覆盖你的全局镜像
只要项目根目录的 composer.json 里有 repositories 字段,全局设置就自动失效——这不是 bug,是 Composer 的设计逻辑:
- 检查方式:
composer config repositories(无-g),有输出即说明项目级配置存在 - 临时禁用:
composer config --unset repositories(只删当前项目的字段) - 若项目必须保留私有源,需显式启用默认源:
"packagist.org": true,不能留空或设为false - 换源后卡在
Loading composer repositories?先删vendor/和composer.lock,再跑composer install -vvv
最易被忽略的是:重装后所有配置归零,而 repositories.packagist.org 这个键名和 clear-cache 是强制动作——漏掉任意一个,Composer 就会安静地退回官方源,连 warning 都不抛。

















