Composer换源后仍慢,根本原因是配置错误或缓存未清:键名必须为repo.packagist(非repos)、type值必填composer、URL末尾须带/,三者缺一即静默回退官方源;还需执行composer clear-cache和composer update --lock更新lock文件中的dist.url。

换镜像源本身不难,但“配了还是慢”几乎全是配置写错或缓存没清导致的——不是网络问题,是 Composer 根本没走你设的地址。
composer config -g repo.packagist 命令必须带 type 参数
漏掉 composer 这个 type 值,命令看似成功,实际配置无效。Composer 2.x+ 会静默 fallback 到 https://packagist.org,连错误提示都不给。
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/✅ 正确(三要素齐全) -
composer config -g repo.packagist https://mirrors.aliyun.com/composer/❌ 缺 type,无效 -
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/❌ 键名错(多了一个 s),被忽略 -
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer❌ 少末尾/,拼出/packages.json时变成 404
验证是否写入成功:composer config -g repo.packagist 输出必须是完整 JSON 对象,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null 或仍是官方地址,说明根本没生效。
换了镜像,composer update 还卡在 downloading xxx?检查 composer.lock 的 dist.url
镜像只改元数据拉取地址,不自动更新 composer.lock 里每个包的下载路径。如果 lock 文件中某个包的 dist.url 仍是 https://repo.packagist.org/dists/...,Composer 就会优先尝试这个地址——失败后不一定 fallback,尤其在 CI 或企业网络下直接超时。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
composer update --lock强制重写所有包的dist.url字段,让它指向镜像源路径(如https://mirrors.aliyun.com/composer/dists/) - 验证方法:打开
composer.lock,搜索任意包名(如hyperf/cache),确认其dist.url值以镜像域名开头 - 新项目用
composer create-project时,加--repository=https://mirrors.aliyun.com/composer/可跳过旧 lock 干扰
为什么 clear-cache 不可跳过
缓存里存着旧的 packages.json 和 provider-*.json 元数据,Composer 默认 15 分钟内不过期,优先读本地缓存再校验远程地址——哪怕你刚配好镜像,它仍可能反复尝试从 https://packagist.org 拉索引,卡在 DNS 解析或 TLS 握手阶段。
- 必须运行
composer clear-cache(不是已废弃的composer cache-clear) - 看到两行输出:
Clearing cache (cache-dir):和Clearing cache (cache-vcs):才算真正清掉 - 临时验证是否走镜像:加
--no-cache跑一次composer install -vvv,看日志里请求的是哪个域名
Composer ≥ 2.5 用 --refresh,≤ 2.4 需手动删缓存子目录
执行 composer update 显示 “Nothing to install or update”,但 Packagist 页面和镜像站都显示有新版本,这不是镜像不同步,而是本地元数据缓存没刷新。
- Composer ≥ 2.5:直接运行
composer update --refresh,它只丢弃packages.json和provider-*.json,强制从当前镜像源重拉最新元数据,不删 ZIP 包、不重装、不重建 lock 文件 - Composer ≤ 2.4:不支持
--refresh,只能手动删缓存子目录:rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-c - 注意:
composer update --refresh不会改变依赖版本,只刷新可用版本列表;真要升级包,还得配合composer update vendor/package
最常被忽略的其实是权限和路径错位:比如用 sudo composer config -g ... 写到了 /root/.composer/config.json,而普通用户运行时读的是自己家目录下的配置——结果两边都以为配对了,其实谁都没生效。

















