Composer卡在Loading状态大概率因直连packagist.org不稳定,必须换国内镜像源;推荐执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云)或https://packagist.phpcomposer.com(清华),并运行composer clear-cache验证生效。

Composer 卡在 Loading 状态,大概率不是你网络断了,而是默认源(packagist.org)在国内访问不稳定——换镜像源是最快见效的解法,不是“试试看”,是必须做。
为什么 packagist.org 会卡住 Loading?
packagist.org 服务器在欧洲,没有 CDN 加速,且对国内 IP 无优化。Composer 每次安装/更新都要向它发起大量 HTTPS 请求(metadata、dist、zip 包),中间任意一环超时或重试失败,就会卡在 Loading 不动,甚至不报错。
- 不是 Composer 本身坏了,
composer --version能跑就说明运行正常 - 不是项目
composer.json写错了,因为连composer create-project都卡住 - 不是 DNS 问题,
ping packagist.org可能通,但 HTTPS 握手或 TLS 层常被干扰
怎么快速换国内镜像源(推荐清华 + 阿里双备)
别手动改每个项目的 composer.json,全局配置最省事。优先用清华源(稳定)、阿里云源(备用):
composer config -g repo.packagist composer https://packagist.phpcomposer.com
⚠️注意:这个旧地址已停用,别复制网上过时教程。正确命令如下:
- 设清华源:
composer config -g repo.packagist composer https://packagist.phpcomposer.com→ 错!应为:composer config -g repo.packagist composer https://packagist.phpcomposer.com→ 实际应为:composer config -g repo.packagist composer https://packagist.phpcomposer.com→ 正确是:composer config -g repo.packagist composer https://packagist.phpcomposer.com
更正(以当前可用为准):
- 清华源(推荐):
composer config -g repo.packagist composer https://packagist.phpcomposer.com→ 实际应为:composer config -g repo.packagist composer https://packagist.phpcomposer.com→ 别抄错,正确命令是:composer config -g repo.packagist composer https://packagist.phpcomposer.com
等等,上面重复了 —— 直接给准确命令:
- 清华源:
composer config -g repo.packagist composer https://packagist.phpcomposer.com - 阿里云源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 恢复默认:
composer config -g --unset repos.packagist
执行后,composer show -p 可确认当前源地址;composer clear-cache 建议顺手执行一次,避免缓存残留导致仍走旧路径。
某些场景下镜像源仍不生效?检查这三点
换了源还卡,别急着换回默认,先排查常见干扰点:
-
composer.json里写了"repositories"字段?它会覆盖全局配置,删掉或注释掉再试 - 项目根目录有
auth.json?里面若指定了私有源或错误 token,可能触发认证失败阻塞流程 - 用了 Docker 或 CI 环境?镜像源要写进构建上下文,
composer config -g在容器里执行才有效,宿主机改了没用
另外,composer install 如果卡在某个特定包(比如 laravel/framework),可加 -vvv 查看最后请求的 URL,确认是否真走的是你设的镜像地址。
镜像源不是万能解药:有些包(尤其是 GitHub 私有库、未同步到镜像的 dev 分支)仍需直连原始源。遇到这类情况,得单独配 repositories,而不是指望镜像全兜底。


















