composer 镜像配置生效需满足三点:键名必须为 repo.packagist(单数)、值必须是完整 json 对象且 url 末尾带 /;镜像未同步或项目级 repositories 会覆盖全局配置;缓存残留会导致元数据错乱,必须彻底清理并验证真实请求 url。

composer config -g repo.packagist 显示正常但没生效
这不是配置没写进去,而是 Composer 只认 repo.packagist(单数),写成 repos.packagist 或 repositories.packagist.org 都会静默忽略——不报错、不警告、直接退回到 packagist.org。
必须同时满足三点:
-
repo.packagist键名不能多字母、不能复数 - 值必须是完整 JSON 对象:
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},只写 URL 字符串会被当普通字符串存,不识别为源 -
url末尾必须带/,否则请求路径拼成/composer/packages.json而非/packages.json,返回 404
镜像地址正确却仍下载失败
常见现象是 composer install -vvv 日志里先出现 Downloading https://mirrors.aliyun.com/...,几秒后又切到 https://api.packagist.org/... ——这不是配置失效,而是 Composer 2.2+ 默认行为:镜像返回 404 或 503 时自动 fallback 到官方源。
这通常意味着你要的包还没同步过去。验证方法:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 打开镜像首页(如
https://mirrors.aliyun.com/composer/),看右下角“最后更新时间”,滞后超 30 分钟就别硬等 - 用
composer show -p vendor/package查包是否存在;若为空但官网能打开,基本就是镜像未收录 - 临时切回官方源测试:
composer config -g repo.packagist composer https://packagist.org,再composer require vendor/package --no-install -vvv
项目级 repositories 覆盖了全局配置
哪怕 composer config -g repo.packagist 返回的是阿里云地址,只要项目根目录的 composer.json 里有 "repositories" 字段,它就优先生效,且完全绕过 fallback 逻辑。
快速确认和处理:
- 进项目目录运行
composer config repo.packagist(不加-g),有输出说明被覆盖 - 用
grep -A 5 '"repositories"' composer.json或直接打开文件搜索,确认是否残留已下线源(如laravel-china.org) - 不需要私有源时,删掉整个
"repositories": [...]块;需要保留时,确保第一个源是你配的镜像,并显式禁用官方源:"packagist.org": false
缓存残留导致元数据错乱
Composer 缓存里存的是 packages.json 快照,包含包列表和 dist 下载链接。不清缓存,即使换源成功,它仍按旧元数据发起请求——表现为日志 URL 是镜像域名,但实际下载失败或反复重试。
必须清缓存,且要清干净:
- Linux/macOS:
rm -rf ~/.composer/cache/*,再ls -la ~/.composer/cache/确认为空 - Windows:
del /s /q "%APPDATA%\Composer\Cache\*" - 更彻底:先运行
composer config -g cache-dir /tmp/composer-cache-empty,再composer clear-cache - 验证是否生效:
composer require monolog/monolog --no-install -vvv,只看第一行Downloading https://的域名
composer diagnose 的 “Repo packagist.org:” 行都可能滞后或误导。尤其在 CI/CD 环境中,本地设的镜像根本不会自动继承,必须显式注入。










