composer install 卡在 downloading 的本质是默认源 packagist.org 国外节点在国内遭遇 dns 污染、tls 握手超时或连接重置;推荐全局配置阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。

Composer install 卡在 downloading,本质是默认源走的是 packagist.org 国外节点
国内直连 packagist.org 通常会遭遇 DNS 污染、TLS 握手超时或连接重置,composer install 表现为卡在某个包的 downloading 阶段,甚至报 Connection refused 或 Operation timed out。这不是本地网络问题,而是源本身不可靠。
全局配置阿里云镜像(推荐)
阿里云镜像稳定、同步及时,且支持 HTTPS 和 Composer 2.x+ 所有协议特性。执行以下命令即可生效:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
验证是否生效:
composer config -g repo.packagist
输出应为:{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}
注意点:
-
-g表示全局配置,影响所有项目,无需每个项目重复设置 - 不要用
composer config -g repositories.packagist—— 这个键名已过时,Composer 2.2+ 必须用repo.packagist - 如果之前设过其他镜像(如腾讯云),先清掉:
composer config -g --unset repos.packagist
临时切换镜像(单次 install 场景)
CI/CD 流水线或 Docker 构建中不想改全局配置?直接加 --repository-url 参数:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer install --repository-url=https://mirrors.aliyun.com/composer/
该参数优先级高于全局配置,且不污染本地环境。适合以下场景:
- 构建脚本里避免副作用
- 团队协作中防止成员误配镜像导致依赖不一致
- 调试时快速对比不同源行为(比如验证是否真是源的问题)
注意:--repository-url 不会影响 composer update 的锁文件生成逻辑,但会强制所有包从指定源解析 —— 若该镜像暂未同步最新版本,可能触发 Package not found 错误。
为什么不用国内某些“一键脚本”或修改 hosts?
常见误区包括:
- 运行所谓“Composer 加速脚本”,背后偷偷替换
composer.json或注入私有源 —— 安全风险高,且易与项目原有配置冲突 - 手动改
/etc/hosts绑定packagist.org到国内 IP —— 多数失效,因 packagist 使用 CDN + SNI,IP 绑定无法绕过证书校验 - 用
http://非加密镜像(如旧版 phpcomposer.com)—— Composer 2.x 默认禁用非 HTTPS 源,会直接报错Invalid repository type: http
真正可靠的只有两类:官方认可的 HTTPS 镜像(阿里云、华为云、清华大学),或企业自建的私有 Packagist 实例。其他方式短期可能“有效”,但大概率在某次 Composer 升级后突然失效。
镜像不是万能的 —— 如果项目依赖了 GitHub 私有仓库或 GitLab 自托管包,镜像不会加速这些地址;这类包仍走原始 Git 协议,需单独优化 SSH 或 token 认证路径。










