Composer install卡在downloading是因为默认源packagist.org在国内直连极慢,DNS解析慢、TCP连接不稳定、下载中断频繁;应全局配置阿里云镜像(composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/),并验证输出是否为该URL,确保末尾有斜杠且启用HTTPS。

为什么 composer install 卡在 downloading?
因为默认源 packagist.org 在国内直连极慢,甚至超时失败。不是网络问题,是物理距离和路由限制导致的 DNS 解析慢、TCP 连接不稳定、下载中断频繁。临时换源能立竿见影,但必须确认镜像是否同步、是否支持 HTTPS、是否兼容 Composer 2.x+。
怎么快速切换到阿里云或腾讯云镜像?
用 composer config 命令全局或项目级设置,不改配置文件,不易出错:
- 全局生效(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 仅当前项目生效:
composer config repo.packagist composer https://mirrors.cloud.tencent.com/composer/
- 恢复默认源:
composer config -g --unset repos.packagist
注意:阿里云镜像地址末尾有斜杠,腾讯云没有;漏掉斜杠会导致 404;HTTPS 必须写全,HTTP 会被 Composer 2.2+ 拒绝。
执行 composer update 还是报 timeout?
镜像只是解决包下载,但 update 过程中 Composer 仍会尝试访问 packagist.org 的元数据接口(如 /packages.json),若未彻底覆盖所有源,就会卡住。验证是否生效:
- 运行
composer config -g repo.packagist,输出应为完整镜像 URL,不是{"type": "composer", ...}这类对象格式 - 检查是否有多个源冲突:
composer config -g repos,若看到packagist和packagist.org并存,删掉后者:composer config -g --unset repos.packagist.org - 某些公司内网会拦截 HTTPS 镜像域名,可临时试下华为云镜像:
https://mirrors.huaweicloud.com/repository/php/(注意路径结构不同,需加/结尾)
CI/CD 环境里镜像配置失效?
CI 脚本常使用 composer install --no-interaction,但若未提前配置镜像,它仍会读取默认源。解决方案不是在脚本里反复 config,而是:
- 在
composer.json顶层加"repositories"字段(优先级高于全局 config):"repositories": [{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}] - Docker 构建时,在
RUN中先设镜像再 install:RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && composer install --no-interaction
- GitHub Actions 等平台,避免用
cache: composer默认策略——它的缓存 key 不包含镜像配置,容易混用旧缓存导致失败
镜像不是一劳永逸的开关,每次升级 Composer 或重装 PHP 环境后,都要重新确认 repo.packagist 是否还在全局配置里。











