必须清掉 repo/ 缓存才能让新源生效,因 composer 会复用 ~/.composer/cache/repo/ 中旧的元数据(如 packages.json),导致仍请求已失效的旧地址而报 404 或 timeout。

镜像源失效后,光改配置不清理缓存,Composer 还是会继续从旧地址拉包或报 404/timeout —— 必须清掉 repo/ 缓存才能让新源生效。
为什么改了镜像源还走老地址
Composer 把远程源的元数据(比如 packages.json)缓存在 ~/.composer/cache/repo/(Linux/macOS)或 %APPDATA%\Composer\Cache\repo\(Windows)里。哪怕你用 composer config -g repo.packagist https://mirrors.aliyun.com/composer/ 改了配置,它仍可能复用旧缓存里的 URL 和版本列表,导致:
-
Could not find package xxx(其实包存在,只是元数据没刷新) -
file could not be downloaded: Connection refused(还在连已停服的旧镜像) -
curl error 28: Operation timed out(DNS 或 CDN 已失效,但本地缓存没清)
删 repo/ 缓存比全量 clear-cache 更准
composer clear-cache 会清空整个 cache/ 目录(files/、repo/、vcs/),但多数情况下,问题只出在 repo/。手动删它更轻量、更可控:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:
rm -rf ~/.composer/cache/repo/packagist.org - Windows:
rd /s /q "%APPDATA%\Composer\Cache\repo\packagist.org" - 验证是否生效:
composer config repo.packagist应输出新镜像地址,再跑一次composer install --dry-run看是否秒出结果
换源后仍报错?检查这三处残留
即使缓存清了,以下位置还可能藏着旧源引用:
-
composer.json里的repositories字段:项目级配置优先级高于全局,别只改-g就以为完事 -
~/.composer/config.json:全局配置文件里可能有重复或冲突的repo.packagist条目 -
vendor/composer/installed.json:极少数情况,这里会缓存旧源的包安装记录,删vendor/+composer.lock再重装可彻底刷新
真正容易被忽略的是:CDN 镜像本身有缓存(如阿里云默认 TTL 24 小时),你本地清得再干净,第一次 composer update 仍可能拿到过期元数据 —— 此时等几小时或加 --no-cache 强制跳过本次缓存读取更实际。










