Composer install卡在“正在下载”本质是网络超时挂起,因默认直连packagist.org遭遇DNS污染或TLS握手失败,需Ctrl+C终止、删vendor和composer.lock.tmp后换清华等国内镜像源重试,并用-vvv验证真实请求地址。

Composer install 卡在“正在下载”基本是网络问题,不是命令本身出错,直接强制终止再换源重试最有效。
为什么卡在“正在下载”不报错也不继续?
Composer 默认走 packagist.org,国内访问常因 DNS 污染、TLS 握手超时或 CDN 节点响应慢导致连接挂起。它不会主动报错,而是持续等待(默认超时长达 300 秒),看起来就像“卡住”。
- 常见现象:
Downloading https://packagist.org/packages.json或某个.zip文件后长时间无输出 - 不是磁盘满、权限错或 PHP 配置问题——那些会立刻报错
- 用
composer diagnose看不到异常,因为网络层还没触发失败判定
如何安全强制终止并清理残留?
别直接关终端或杀 terminal 进程,否则 composer.lock 可能写到一半、vendor 目录残留半成品,下次 run 还会冲突。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 按
Ctrl + C中断当前composer install(这是最干净的终止方式) - 删掉已损坏的 vendor:
rm -rf vendor/(Linux/macOS)或rmdir /s vendor(Windows cmd) - 检查并删掉临时锁文件:
rm -f composer.lock.tmp(它可能卡在写入状态) - 不建议手动删
composer.lock,除非你确认要重生成依赖树
换国内镜像源后重装的实操步骤
清华、阿里、华为源都可用,推荐清华源(稳定性高,同步及时):
- 全局切换:
composer config -g repo.packagist composer https://packagist.phpcomposer.com(旧版)或composer config -g repo.packagist composer https://packagist.org+composer config -g repos.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/(新版 2.2+) - 临时单次使用(更稳妥):
composer install --repository-url=https://mirrors.tuna.tsinghua.edu.cn/composer/ - 加
-vvv参数看真实进度:composer install -vvv --repository-url=https://mirrors.tuna.tsinghua.edu.cn/composer/,能看到具体卡在哪一步、DNS 解析是否成功、HTTP 状态码多少
容易被忽略的底层细节
即使换了镜像,仍可能卡住——这时候得查是不是本地环境在捣鬼:
- 公司代理或防火墙拦截了 HTTPS 请求,可临时关代理试试;
composer config -g -u http-proxy清除代理设置 - PHP 的
openssl.cafile配置错误会导致 TLS 握手失败,表现为“Connection timed out”,运行php -r "print_r(openssl_get_cert_locations());"看 CA 路径是否可读 - 某些老旧 Composer 版本(如 1.x 末期)对 HTTP/2 支持不稳定,升级到
composer self-update最新版能避开一批静默卡死

















