Composer 2.5.0+ 已彻底移除 self-update 命令,升级必须重装;镜像配置不会保留且需手动重配 repositories.packagist.org 键名,配置后须 clear-cache 并用 -vvv 日志验证真实请求域名。

Composer 2.5.0+ 已彻底移除 self-update 命令,升级必须重装;镜像配置不会保留,升级后默认回退到官方源,必须手动重配,且键名、格式、缓存三者任一出错都会静默失效。
用官方脚本重装 Composer(别碰 self-update)
执行 self-update 只会报错 Command "self-update" is not defined。正确做法是下载并校验安装脚本:
- 下载:运行
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 校验:用
php -r "echo hash_file('sha384', 'composer-setup.php');"对比官网公布的 SHA-384 值(2026 年最新为795f976fe0ebd8b75f26a6dd68f78fd3453ce79f32ecb33e7fd087d39bfeb978342fb73ac986cd4f54edd0dc902601dc) - 安装:运行
php composer-setup.php --install-dir=/usr/local/bin --filename=composer(macOS/Linux)或指向C:\ProgramData\ComposerSetup\bin\(Windows) - 刷新 shell:执行
hash -r(Linux/macOS)或新开 PowerShell/CMD 窗口(Windows)
全局配置中文镜像必须用 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/"}' - 腾讯云(带 fallback):运行
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"}' - 单引号包裹整个 JSON(Linux/macOS),PowerShell 中需改用双引号并转义内部引号:
composer config -g repositories.packagist.org "{`"type`": `"composer`", `"url`": `"https://mirrors.aliyun.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,说明配置无效 - 常见干扰项:项目级
repositories字段会完全覆盖全局配置,可用composer config -l | grep repositories检查是否被composer.json劫持 - 临时绕过所有自定义源测试:加
--repository=https://packagist.org参数,如果这时变快了,就证明你本地镜像根本没生效
项目级配置比全局更可靠,尤其在多版本或 CI 场景
全局配置在 Docker、CI runner、不同用户权限下极易失效。项目级写进 composer.json 是最可控的方式:
- 进项目根目录,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不加-g) - 该命令会自动向
composer.json的repositories数组追加"packagist"条目,不覆盖已有私有源 - 改完后必须运行
composer update --lock,否则composer.lock仍记录旧源地址 - 注意:
"repositories"必须是顶层数组,"packagist"是固定 key 名,不能写成"aliyun"或其他别名
最容易被忽略的是缓存清理和日志验证——哪怕命令执行无报错、config -g 显示正常,只要没跑 clear-cache 或没用 -vvv 看真实域名,你就永远不知道请求到底发去了哪。

















