Composer安装慢八成卡在元数据检索,必须配置repo.packagist镜像源(如https://mirrors.aliyun.com/composer/)并清缓存;并发下载调至15、关闭classmap-authoritative可进一步提速。

Composer安装慢,八成不是下载慢,而是卡在检索 Packagist 元数据——也就是读 packages.json、provider-laravel.json 这类索引文件时反复超时或重试。换镜像源不是“试试看”,而是必须一步到位配对元数据同步逻辑。
为什么改 repo.packagist 才真正生效
很多人只改了 repositories 数组里的自定义源,却漏掉最关键的 repo.packagist 配置项。Composer 3.x+ 默认把 packagist.org 当作“权威源”硬编码处理,不走 repositories 列表;只有显式设置 repo.packagist,它才会把所有元数据请求(包括 provider 查询、package list、version metadata)转向镜像站。
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/是唯一推荐的全局配置方式 - 别手写
~/.composer/config.json,容易格式错或覆盖auth字段 - 项目级覆盖用
composer config repo.packagist composer ...,但要确认项目没在repositories里重复声明 packagist - 执行后运行
composer show packagist/support,输出 URL 应含镜像域名,才算真正生效
composer diagnose 报 “Could not fetch packages.json” 怎么定位
这个错误表面是网络问题,实际常因镜像未同步新包或元数据结构变更导致。Packagist 的 provider 索引是分片生成的(如 provider-laravel~6.0.json),镜像若落后几小时,就会返回 404 或空响应。
- 先用
curl -I https://mirrors.aliyun.com/composer/p2/laravel/framework/10.0.0.json直接测镜像是否返回 200 - 如果 404,再查官方源:
curl -I https://repo.packagist.org/p2/laravel/framework/10.0.0.json,确认包是否存在 - 若官方有、镜像无,说明该镜像暂未同步,换用中科大源(
https://mirrors.ustc.edu.cn/composer/)或临时切回官方源 - 别信
-vvv日志里 “Resolving dependencies” 那行——那只是开始,真正卡点在后续几百次 provider 请求
并行下载开不开?默认已开,但得调高
Composer 2.2+ 默认启用并行下载,但默认并发数仅 5,对国内多节点镜像来说太保守。实测调到 15 能压满带宽,又不触发阿里云/腾讯云镜像的限流阈值。
- 查当前值:
composer config -g parallel-downloads - 设为 15:
composer config -g parallel-downloads 15 - 别设到 20+,否则 DNS 解析可能超时,报
Failed to decode response或Connection refused - 这个参数不影响元数据检索,只加速后续 tarball 下载;但元数据快了 + 下载快了,整体感知才明显
autoload dump 慢不是网络问题,是 classmap-authoritative 在扫盘
你执行 composer update 后卡在 “Generating autoload files”,不是等网络,是在本地遍历整个 vendor/ 目录生成 classmap。Composer 3.x 默认开启 classmap-authoritative,哪怕只更新一个包,也要重扫全部。
- 关掉它:
composer config authorative false(注意拼写是authorative,不是authoritative) - 或者删掉
composer.json里的"optimize-autoloader": true - 如果项目真需要优化 autoloader(比如生产环境),建议改用
composer dump-autoload --classmap-authoritative --no-dev手动触发,而非每次 update 都跑 - 这个开关和镜像无关,但很多人误以为“换源后还慢”就是镜像没起作用,其实慢点在磁盘 I/O 上
最易被忽略的一点:镜像只加速元数据同步,不解决扩展缺失、PHP 版本不兼容、私有包认证失败这类问题。看到报错先盯住第一行——如果是 ext-mbstring missing 或 github rate limit,换镜像毫无意义。











