镜像切换后仍连packagist.org,主因是缓存未清:composer clear-cache必须执行,否则composer继续使用旧packages.json解析依赖;配置生效需满足repo.packagist(单数)、带composer type、url以/结尾三条件,且≥2.5可用--refresh精准刷新元数据。

镜像切换后 composer install 依然连 packagist.org,不是镜像慢,是缓存里还存着旧元数据——composer clear-cache 必须跟在配置之后执行,否则白配。
为什么改了镜像却没走新源?
Composer 的依赖解析靠的是缓存里的 packages.json 和 provider-*.json,这些元数据有 15 分钟默认有效期。即使你刚用 composer config -g repo.packagist 改了源地址,只要缓存没清,它就继续拿旧文件算依赖,根本不会去新镜像站拉最新索引。
- 验证方式:运行
composer install -vvv,看日志第一行请求的 URL 是不是你的镜像地址(如https://mirrors.aliyun.com/composer/packages.json) - 常见假象:命令回显
Successfully saved...≠ 配置生效;composer config -g repo.packagist输出为空、null或仍是https://packagist.org,说明配置压根没写进去 - Composer ≥ 2.5 用户可跳过全量清理,直接跑
composer update --refresh,它只丢弃元数据缓存,不删 ZIP 包,更快更准
clear-cache 前必须确认三件事
composer clear-cache 本身没问题,但若前置条件没满足,清完照样走错路。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 键名必须是
repo.packagist(单数、全小写、无s),写成repos.packagist或repositories.packagist会被静默忽略 - 配置命令末尾必须带
composer类型标识,例如:composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/;漏掉composer就 fallback 到官方源 - URL 必须以
/结尾,且为 HTTPS;少斜杠会导致请求路径拼成/composerpackages.json,直接 404
清缓存后仍卡在 Resolving dependencies 怎么办?
这和镜像无关,是本地元数据缓存未刷新导致的假性“卡住”。Composer 在解析阶段不走网络,纯靠缓存里的 provider 文件做包映射,旧文件里没有新镜像同步过来的包信息,就会无限循环尝试匹配。
- 不要反复
clear-cache—— 它删的是下载产物,不是解析依据 - 优先执行
composer update --refresh(≥ 2.5)或composer clear-cache && composer update --no-install(旧版) - 如果项目级
composer.json里有repositories字段,它会覆盖全局配置;临时排查可加-vvv看 “Loading config” 阶段是否读到了你的镜像 URL
磁盘空间没释放?你清的可能根本不是大头
composer clear-cache 只清 cache/files/、cache/repo/、cache/downloads/,真正占空间的是 cache/vcs/ 和系统临时目录里的 composer_*.zip。
- 查真实缓存路径:
composer config --global cache-dir,别硬删~/.composer/cache -
cache/vcs/里是 Git 裸仓库,单个常超 300 MB,且生成海量小文件,容易触发No space left on device;可安全全删:rm -rf $(composer config --global cache-dir)/vcs - 临时目录清理:
php -r "echo sys_get_temp_dir();"查路径,再删匹配composer_*的 ZIP 文件
最常被忽略的一点:镜像只加速元数据和 ZIP 下载,不参与依赖解析逻辑。如果你的 composer.lock 里还锁着旧版本或旧源地址,哪怕镜像再快,install 也会按 lock 文件硬装——换源前先确认 lock 是否需要重生成。










