composer install卡在updating dependencies主因是未生效国内镜像源,须执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/并清缓存,再验证config输出与install -vvv日志是否含镜像域名。

Composer install 一直卡在 Updating dependencies
国内直连 Packagist 官方源(https://packagist.org)时,composer install 或 composer update 经常卡在 Updating dependencies 阶段,本质是 DNS 解析慢、TLS 握手超时或 CDN 回源失败,不是网络完全不通,所以容易误判为“命令没反应”。
- 别等超过 90 秒 —— 这基本说明镜像没生效或配置被覆盖
- 运行前先确认是否已全局设置:执行
composer config -g repo.packagist,输出应为带https://mirrors.aliyun.com/composer/或类似地址的 JSON - 若项目根目录存在
composer.json且含"repositories"字段,它会**优先覆盖全局配置**,需同步修改
阿里云 / 华为云镜像怎么设才真正生效
用 composer config -g 设置全局镜像最稳妥,但必须注意路径权限和作用域:
- 执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(注意末尾composer是类型标识,不能省) - 华为云镜像地址是
https://mirrors.huaweicloud.com/repository/php/,同样要带composer类型后缀 - Windows 用户若用 Git Bash,确保不是在 Windows Subsystem for Linux(WSL)里执行 —— 两者
COMPOSER_HOME路径不同,镜像配置不互通 - 设完立刻验证:删掉项目
vendor/和composer.lock,再跑composer install -v,看日志里Downloading https://mirrors...是否出现
为什么换了镜像还走官方源?检查这三处
镜像失效往往不是地址写错,而是被更高优先级配置拦截:
-
composer.json顶层有"repositories"且包含{"type": "composer", "url": "https://packagist.org"}—— 直接干掉这一整段 - 项目目录下存在
composer.conf(非标准,但某些 IDE 或脚本会生成),会覆盖全局配置 - 环境变量
COMPOSER_REPO_PACKAGIST被设为官方地址,运行echo $COMPOSER_REPO_PACKAGIST(Linux/macOS)或echo %COMPOSER_REPO_PACKAGIST%(Windows)确认
PHP 8.2+ + Composer 2.5+ 的兼容细节
新版 Composer 对镜像响应头更敏感,部分老镜像站返回 Content-Type: text/plain 会被拒绝:
- 阿里云、腾讯云、华为云当前均适配,但清华 TUNA 镜像自 2024 年起已停止维护 Composer 子服务,
https://mirrors.tuna.tsinghua.edu.cn/composer/已不可用 - 如果遇到
Invalid response header: Content-Type错误,换用阿里云或华为云地址 -
composer self-update后务必重设镜像 —— 新版默认会清空旧的repo.packagist配置
镜像不是一劳永逸的开关,每次升级 Composer、切换 PHP 版本、或拉取新项目时,都要快速验证一次实际请求地址。最省事的方式是把镜像设置命令写进团队初始化脚本,而不是靠文档提醒。











