composer install卡在downloading是因为默认源packagist.org境外直连受dns污染、tls握手慢和路由绕行三重影响,必须全局配置国内镜像(如阿里云https://mirrors.aliyun.com/composer/)而非仅改项目级repositories,且需配合clear-cache生效。

为什么 composer install 总卡在 downloading 包?
因为默认源 packagist.org 在境外,国内直连常超时或限速。不是网络差,是路由绕、DNS 污染、TLS 握手慢三重叠加。镜像不是“锦上添花”,而是开发启动的刚需。
全局换源:用 composer config -g repo.packagist 一行生效
别改 composer.json 里的 repositories——那是项目级配置,治标不治本;全局换源才让所有新项目自动受益。国内主流镜像中,https://packagist.phpcomposer.com 已停用,当前稳定可用的是清华和阿里源:
-
composer config -g repo.packagist composer https://packagist.phpstudy.net(PHPStudy 镜像,兼容性好,支持 HTTPS) -
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云,更新快但偶尔同步延迟) -
composer config -g repo.packagist composer https://packagist.mirrors.ustc.edu.cn(中科大,稳定性高,适合 CI 环境)
执行后可运行 composer config -g -l | grep repo 验证是否写入成功。注意:如果之前设过项目级源,它会优先于全局源,需先删掉项目根目录下的 composer.json 中的 repositories 段。
临时切源:用 -vvv 和 --repository-url 快速验证
当某个包安装失败,不确定是源问题还是包本身问题时,别反复清缓存重试,直接指定镜像拉取:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer clear-cache(清旧缓存,避免本地缓存干扰) composer require monolog/monolog --repository-url=https://packagist.phpstudy.net- 加
-vvv参数能看到真实请求 URL 和响应状态,比如出现404 Not Found或Connection refused就能立刻定位是镜像同步滞后还是网络不通
这个组合特别适合排查“某几个包装不上”的孤立问题,比全局换源更轻量、更可控。
CI/CD 中镜像失效怎么办?
GitHub Actions、GitLab CI 默认不继承你本地的全局配置,每次都是干净环境。必须显式设置:
- 在
.github/workflows/composer.yml的steps中,composer install前插入:composer config -g repo.packagist composer https://packagist.phpstudy.net - 若用 Docker 构建,应在
Dockerfile的RUN指令里提前配置,而不是靠构建机预装 - 某些 CI 平台(如腾讯 CODING)自带镜像代理,但只对
composer install生效,create-project仍走默认源,得手动指定--repository-url
镜像不是一劳永逸的开关,它本质是 HTTP 代理服务,上游同步延迟、证书过期、域名变更都可能突然导致失败——留一个备用源地址,比等报错再查更省时间。










