换国内镜像源是解决 Composer 安装 Hyperf 卡顿的最快解法,但必须配对配置 type、清缓存、执行 composer update --lock 重写 composer.lock 中 dist.url,否则仍走境外源;推荐阿里云等镜像,并配合 --no-dev --prefer-dist --optimize-autoloader 参数提速。

composer install 卡在 “Loading composer repositories” 或下载 hyperf/* 包极慢,不是你机器差,也不是 Hyperf 本身有问题——根本原因是默认走境外 packagist.org,元数据拉取和 ZIP 下载都受 DNS、TLS 握手、CDN 距离拖累。换国内镜像源是最快见效的解法,但必须配对、清缓存、刷新 lock 文件,否则白换。
为什么换了镜像还是卡在 installing hyperf/cache v3.1.0?
常见现象:执行 composer create-project hyperf/hyperf-skeleton 或 composer require hyperf/http-server 后,进度停在某个 hyperf/xxx 包的 downloading 阶段,甚至超时失败。
核心原因不是镜像没生效,而是:composer.lock 里记录的是原始 packagist.org 的 dist URL,Composer 会优先尝试这个地址;即使全局镜像已设,它仍会先发一次请求到旧链接,失败后才 fallback(且不保证 fallback 成功)。
- 执行
composer update --lock强制重写 lock 文件中的下载链接,让所有包指向镜像源 - 如果项目已有
composer.lock,不要跳过这步;新项目用create-project时也建议加--repository参数直连镜像 - 验证是否生效:查看
composer.lock里任意一个hyperf/xxx包的dist.url字段,应为https://mirrors.aliyun.com/composer/dists/...类路径
全局换源命令要带 type 标识,否则可能 warning 或失效
直接运行 composer config -g repo.packagist https://mirrors.aliyun.com/composer/ 是错的——缺了 composer 类型标识,Composer 5.0+ 会报 Repo is not configured properly,且部分包仍走官方源。
- 正确写法:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 推荐镜像(2026 年 7 月实测可用):
https://mirrors.aliyun.com/composer/、https://mirrors.huaweicloud.com/repository/php/、https://mirrors.tuna.tsinghua.edu.cn/composer/ - 验证是否写入成功:
composer config -g repo.packagist应输出完整 URL;若提示No repositories configured,说明配置未落盘,检查~/.composer/config.json手动确认
Hyperf 安装时额外提速参数不能少
Hyperf 依赖多、包体积大,光换镜像还不够。安装时漏掉关键参数,仍可能卡在 autoloader 生成或 dev 包下载上。
- 生产环境必加:
--no-dev(跳过phpunit、mockery等开发依赖) - 强制走压缩包:
--prefer-dist(避免 clone Git 仓库,Hyperf 的 dist 包已由镜像站托管) - 优化自动加载:
--optimize-autoloader(生成 class map,启动更快,且减少首次 autoload 查找开销) - 示例完整命令:
composer create-project hyperf/hyperf-skeleton project-name --no-dev --prefer-dist --optimize-autoloader --repository=https://mirrors.aliyun.com/composer/
缓存不清理,换源等于没换
Composer 缓存包含元数据快照、ZIP 包副本、签名验证结果。旧缓存里存着 packagist.org 的证书链和包哈希,会导致镜像源校验失败或反复回源。
- 换源后第一件事:
composer clear-cache - 如果之前安装失败过,缓存可能已损坏,
clear-cache比删vendor更彻底 - 执行后可观察
Clearing cache (cache-dir): ...是否完成,再跑 install;否则大概率复现“卡住”现象
composer update --lock 和缓存清理这两步——镜像地址明明对了,composer.lock 还指着国外地址,缓存又没清,三者叠加,速度反而比不换还慢。


















