Composer安装慢问题90%可通过换源https://mirrors.aliyun.com/composer/并执行composer clear-cache解决;其余10%多因配置未生效、缓存未清或项目级repositories覆盖全局设置。

直接换 https://mirrors.aliyun.com/composer/ 并执行 composer clear-cache,90% 的 Composer 安装慢问题当场消失;其余 10% 多半卡在配置未生效、缓存未清或项目级 repositories 覆盖了全局设置。
确认当前生效的镜像源是哪一条
很多人以为执行了 composer config -g repo.packagist 就配好了,其实输出为空、null 或 https://packagist.org 都代表没生效。真正起作用的是:
-
composer config -g repo.packagist必须输出完整 URL,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 注意拼写:是
repo.packagist,不是repos.packagist(多一个s会静默写入无效字段) - URL 末尾的
/不可省略,漏掉会导致部分 Composer 2.2+ 版本回退到官方源,且无任何提示 - 项目根目录
composer.json中的repositories字段优先级更高,会完全屏蔽全局配置
为什么清缓存这一步不能跳过
缓存里存着旧的 packages.json 和 provider 元数据,Composer 会优先读本地缓存再校验远程地址——哪怕你已经切了镜像,它仍可能反复尝试从 https://packagist.org 拉取索引,卡在 DNS 解析或 TLS 握手阶段。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须运行
composer clear-cache,不是composer cache-clear(后者是旧命令,已废弃) - 验证是否清干净:检查
~/.composer/cache/repo/下是否还有https---packagist-org目录 - 临时绕过缓存验证:加
--no-cache参数跑一次composer install -vvv,看日志里请求的是哪个域名
parallel-downloads 设多少才真有用
这个参数只对 composer install 有效,不影响依赖解析,但它能显著压缩 ZIP 包下载时间。默认值 3 基本等于没开。
- 推荐设为
10:composer config -g parallel-downloads 10 - 别盲目冲到
20:低配 CI 环境或企业内网可能出现file_put_contents(): failed to open stream(临时文件竞争) - 该参数依赖镜像站支持 HTTP/2 多路复用,阿里云、中科大、清华镜像都支持;私有源不支持的话,设高了也白搭
- 运行
composer --version确认是 2.2+,1.x 版本需先composer self-update
项目级配置比全局更可靠
在宝塔、CI 或多用户环境下,composer config -g 很可能写到了错误用户的家目录下,导致实际运行时根本读不到。项目级配置可提交进 Git,行为一致。
- 进项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - 它会安全追加到
composer.json的repositories对象中,不覆盖已有私有源 - 如果
repositories是数组格式([]),命令会失败,需手动改为对象格式{} - 改完建议删掉
vendor和composer.lock重装,避免旧 lock 文件里的 hash 与镜像元数据不匹配
最易被忽略的点是:镜像源生效 ≠ 元数据请求走镜像。Composer 2.2+ 之后,repo.packagist 控制的是整个元数据链路(包括 packages.json、p2/ 分片、provider 查询),而不仅仅是包下载地址。只要其中任意一环 fallback 到 packagist.org,就会卡住——所以必须用 -vvv 日志确认每一类请求的真实域名。

















