composer install/update 卡在 downloading 是因默认源 packagist.org 国内访问不稳定,应切换为阿里云(https://mirrors.aliyun.com/composer/)或华为云(https://mirrors.huaweicloud.com/repository/php/)镜像源,并确保 url 结尾带 /。

Composer install/update 卡在 downloading 或 hanging 怎么办
本质是默认源 packagist.org 在国内直连不稳定,DNS 解析慢、TLS 握手超时、大包下载中断都很常见。不是你网络差,也不是 Composer 坏了,是源服务器物理距离和路由导致的。
- 别反复重试
composer install—— 每次都重新走完整流程,失败后缓存无效,纯耗时 - 先确认当前源:
composer config -g repo.packagist,如果输出是{"type": "composer", "url": "https://packagist.org"},那就对了,问题就在这儿 - 临时切镜像(不改全局):加
-vvv参数看卡在哪一步,再用--repository-url=https://packagist.phpcomposer.com(已停用)或直接换为https://mirrors.aliyun.com/composer/
阿里云 / 清华 / 华为镜像源哪个能用、怎么设
2024 年实测有效的只有两个:阿里云和华为云。清华源已关闭公共 Composer 镜像服务;腾讯云镜像同步延迟高、偶尔 503;PHPComponer 镜像早已下线。别搜到旧教程就照抄。
- 全局设置(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 华为云(备选):
composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php/ - 设完立刻生效,不用重启终端,下次
composer update就走新地址 - 注意 URL 结尾必须带
/,少写会报Could not parse version constraint
公司内网或 CI 环境里镜像失效了
有些企业防火墙会拦截非标准域名或校验 HTTPS 证书链,阿里云镜像的证书由 GlobalSign 签发,部分老旧系统(如 CentOS 6、某些 Jenkins slave 镜像)根证书库太老,握手直接失败。
- 先手动 curl 测试:
curl -I https://mirrors.aliyun.com/composer/packages.json,看是否返回 200 - 若提示 SSL certificate problem,升级 ca-certificates:
sudo update-ca-certificates(Debian/Ubuntu)或sudo yum update ca-certificates(CentOS/RHEL) - CI 中建议显式指定镜像 + 关闭 TLS 验证(仅限可信内网):
composer config -g secure-http false,再设镜像 - 不要用
http://明文源 —— 多数新版 Composer 直接拒绝加载
换了镜像还是慢?可能是 lock 文件或 vendor 冲突
镜像只加速「下载」,不解决「解析依赖」本身慢的问题。如果你的 composer.lock 锁的是旧版本,或者 vendor/ 里有残留文件,update 过程仍要本地计算大量版本约束,看起来像卡住。
- 删掉
composer.lock和vendor/后重试(开发环境可接受) - 用
composer update --dry-run先看它打算装哪些包、有没有冲突提示 - 避免无脑
composer update—— 它会尝试升级所有包,比install耗时多几倍 - 某些包(比如
laravel/framework)依赖树极深,即使走镜像,解压 + autoload 生成也占时间,这不是网络问题
镜像只是把下载从 3 分钟压到 20 秒,但依赖解析和 autoloader 生成这步没法跳过——很多人卡在这儿,却以为是镜像没生效。










