Composer“卡在结账界面”实为DNS解析失败或HTTPS连接中断导致的假性卡顿,常见于packagist.org访问受阻,需优先验证网络连通性、DNS解析及PHP环境配置。

Composer 安装包卡在“结账界面”根本不存在——这是典型 DNS 解析失败或 HTTPS 连接中断导致的假性卡顿,不是支付问题,也不是 Composer 本身有购物流程。
为什么 Composer 会“卡在结账界面”
这个说法通常源于执行 composer install 或 composer require 时终端长时间停在某一行,例如:
Downloading https://packagist.org/packages.json ...
实际是 Composer 在尝试连接 packagist.org(默认仓库)时被阻塞。常见原因包括:
- DNS 无法解析
packagist.org(尤其在国内公共网络或企业防火墙环境下) - HTTPS 请求被中间设备拦截或超时(如代理未配置、SSL 证书校验失败)
- 系统 hosts 文件错误映射了
packagist.org到无效 IP - PHP cURL 扩展缺失或不支持 TLS 1.2+(老版本 PHP 常见)
快速验证 DNS 与连通性
别急着改配置,先确认底层网络是否通畅:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 运行
nslookup packagist.org或dig packagist.org +short,看能否返回有效 IP(如146.75.119.190) - 用
curl -I https://packagist.org/packages.json测试直连——如果卡住或报Could not resolve host,就是 DNS 或路由问题 - 若 curl 成功但 Composer 卡住,说明是 PHP 环境问题(比如 cURL 不走系统 DNS 缓存,或 PHP.ini 中
openssl.cafile路径错误)
临时绕过 DNS 和证书问题的实操方案
仅用于排查和应急,不建议长期使用:
- 手动设置 hosts:
echo "146.75.119.190 packagist.org" | sudo tee -a /etc/hosts(Linux/macOS) - 禁用 SSL 验证(仅测试!):
composer config -g secure-http false,再试安装 - 换国内镜像源(推荐):
composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意:该镜像已停用;当前可用的是https://packagist.laravel-china.org或https://mirrors.aliyun.com/composer/) - 强制刷新 Composer 缓存:
composer clear-cache,避免旧的失败响应被复用
容易被忽略的 PHP 层限制
即使网络通,Composer 仍可能卡住:
- 检查
php -m | grep curl是否输出curl——没启用 cURL 扩展时,Composer 会降级用 stream wrappers,极慢且易超时 - 确认 OpenSSL 版本:
php -r "print_r(openssl_get_cipher_methods());",空输出说明 OpenSSL 未加载 - 某些 Docker 环境中,
/etc/resolv.conf被设为127.0.0.11(Docker 内置 DNS),但该地址在宿主机不可达,需改用8.8.8.8或宿主机网关
真正卡住时,90% 的情况不是 Composer 慢,而是它在等一个永远收不到的 DNS 响应或 TCP SYN 包。盯住第一行输出里的域名,直接拿 curl 或 ping 去敲,比反复重试 composer update 有用得多。

















