composer install卡在downloading时,首要确认镜像是否生效:运行composer config -g repo.packagist,输出须为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}格式,非旧版packagist.org嵌套结构;若无效则检查-g参数、项目级配置覆盖或dns/tls问题。

Composer install 时卡在 downloading,先看是不是镜像没生效
国内用 Composer 卡顿,八成不是网络问题,而是镜像配置没真正起作用。很多人改了 composer.json 或跑了 composer config -g repo.packagist,但没确认是否生效。
- 运行
composer config -g repo.packagist,输出必须是类似{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},而不是{"packagist.org": {"type": "composer", ...}}这种旧格式(v2.2+ 已弃用) - 如果输出为空或仍是 packagist.org,说明全局配置没写对;检查是否漏了
-g,或被项目级配置覆盖(项目里composer.json的repositories会优先于全局) - 临时验证镜像是否生效:执行
composer clear-cache && composer require monolog/monolog --no-install,再看日志里下载地址是不是阿里云或腾讯云域名
用 composer diag 测真实下载速度,别靠 ping
composer diag 不只是检查配置,它会实际发起一次到 packagist.org 和当前镜像的 HTTP HEAD 请求,并显示耗时——这才是你该信的“测速”结果。
- 运行
composer diag,重点看Checking https://mirrors.aliyun.com/composer/后面的OK和毫秒数;如果超 3000ms 或直接 timeout,镜像不可用 - 注意:它不测包体下载速度,只测元数据接口;但元数据都慢,install 肯定卡在 “Loading composer repositories…” 阶段
- 如果阿里云慢,换腾讯云:
composer config -g repo.packagist '{"type": "composer", "url": "https://mirrors.cloud.tencent.com/composer/"}'
卡在 “Downloading …” 且无报错?大概率是 DNS 或 TLS 握手问题
Composer 默认用 PHP 的 file_get_contents 或 cURL 下载,不走系统代理,但受系统 DNS 和 OpenSSL 版本影响极大。常见于 macOS 或某些 Linux 发行版。
- 先试
curl -I https://mirrors.aliyun.com/composer/packages.json,如果也卡或超时,问题在系统层,不是 Composer 本身 - macOS 上常见 DNS 缓存污染,运行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - PHP OpenSSL 版本太老(如 CentOS 7 自带的 1.0.2)可能无法完成 TLS 1.2 握手,升级 PHP 或用
composer self-update --snapshot尝试新版内置适配 - 避免手动设
http_proxy环境变量——Composer v2.2+ 对代理支持不稳定,容易静默失败
想跳过 vendor 重装,用 --no-scripts 和 --no-plugins 控制节奏
有时候“卡顿”其实是某个脚本(比如 laravel-mix 编译、php-cs-fixer 扫描)在后台跑太久,看起来像 Composer 卡住。
- 加
--no-scripts --no-plugins再 runcomposer install,如果立刻完成,说明问题出在自定义脚本,不是网络 - 单独执行脚本:查
composer.json的scripts段,用composer run-script post-install-cmd分步调试 - 某些插件(如
hirak/prestissimo)在新版 Composer 中已废弃,强行启用反而导致并发下载异常,删掉composer.json里的prestissimo相关配置
composer diag 把话讲清楚。










