composer install卡在downloading主因是未配置国内镜像,应优先全局或项目级切换至阿里云/腾讯云镜像,并保留composer 2.2+默认的官方源回退机制以防同步延迟。

Composer install 时卡在 downloading,大概率是没配国内镜像
Composer 默认走 packagist.org,国内直连经常超时或限速,composer install 卡在 Downloading... 或反复重试,不是网络问题,是源没换对。
最直接的解法是全局切换到阿里云或腾讯云镜像——它们同步频率高、CDN 覆盖全,基本能解决 90% 的下载慢问题。
- 执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云) - 或
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/(腾讯云) - 配完后运行
composer config -g repo.packagist确认输出是对应 URL,不是{"type": "composer", "url": "..."}这种 JSON 格式(旧版 Composer 可能显示为 JSON,新版是纯 URL)
项目级镜像配置比全局更稳妥,尤其团队协作时
全局镜像看似省事,但一旦某天你参与的开源项目明确要求用官方源(比如测试 packagist.org 的新特性),就容易出错。项目根目录下加 composer.json 配置更可控。
- 在项目根目录运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉-g) - 这条命令会往当前项目的
composer.json的repositories字段里写入镜像配置,不会影响其他项目 - 注意:如果项目已有
repositories字段,别手动覆盖,用命令追加;否则可能误删私有包源 - 验证方式:删掉
vendor和composer.lock,再跑composer install,看日志里下载域名是不是mirrors.aliyun.com
Composer 2.2+ 的 packagist.org 自动 fallback 机制别乱关
新版 Composer 默认开启 packagist.org 回退:当镜像源返回 404 或 503,它会自动切回官方源查一次。这是防镜像不同步的保险丝。
- 别轻易执行
composer config -g repos.packagist false或删掉镜像配置里的packagist.org条目——这会让缺失包直接报错,而不是尝试兜底 - 如果你发现某个包在镜像里找不到,先确认是否真缺失(比如刚发布不到一小时),而不是急着关 fallback
- 镜像同步延迟通常 https://mirrors.aliyun.com/composer/ 底部有“最后更新时间”
换源后 composer update 仍慢?检查 lock 文件和平台配置
镜像只加速下载,不解决依赖解析慢的问题。如果 composer update 卡在 Resolving dependencies,和镜像无关,得看本地环境。
-
composer.lock里记录的是完整包哈希,换源不影响解析逻辑,但若 lock 文件老旧,可能触发大量版本重算——建议先composer update --lock尝试轻量更新 - 确保 PHP 版本和
config.platform.php一致,比如项目声明"platform": {"php": "8.1"},但本地是 PHP 8.2,Composer 会反复尝试兼容版本,拖慢解析 - 加
-vvv参数跑composer update -vvv,看卡在哪一步:如果是Reading composer.json of vendor/package循环,说明某私有源响应慢,需单独优化该源配置










