Composer装包报network错误,90%是系统网络卡在DNS解析、TCP连接或TLS握手阶段;先运行ping packagist.org和curl -I https://packagist.org定位根因,再换DNS、切热点、清缓存、调镜像。
Composer 装包报 network 错误,90% 不是 Composer 本身坏了,而是系统网络卡在 DNS 解析、TCP 连接或 TLS 握手阶段——别急着改
,先确认“能不能通网”。
看到 “Could not resolve host” 或 “Connection timed out” 怎么快速定位
这两类错误根本不在 Composer 控制范围内,是底层网络链路断了:
返回
→ DNS 解析失败,立刻换 DNS(比如
或
),比调
管用十倍
卡住或报
→ 防火墙、代理或 HTTPS 策略拦截,切手机热点一试便知
公司/学校网络常统一屏蔽
和
,不是你配错了,是策略本身不放行
换镜像后还报错?检查缓存、配置覆盖和 URL 格式
镜像配置被绕过,比镜像本身失效更常见:
必须执行
,否则 Composer 仍可能从本地缓存读取已失效的地址
检查项目根目录
是否硬写了
→ 它的优先级高于全局镜像,会直接忽略你用
设的地址
清华镜像 URL 必须带末尾斜杠:
,少一个
就 404
验证是否真生效:
(看全局),
(不加
,看当前项目)
cURL error 28 或 “Connection reset by peer” 不是超时问题
这类错误看着像慢,其实是连接被中间设备(防火墙、NAT、旧 OpenSSL)主动掐断:
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
只影响 GET
这类元数据请求,不影响
—— 后者由 Git 自己控制超时
想让 Git 克隆不卡死:
强制跳过 git、改用 zip 下载(对 GitHub 包有效):
CI/CD 中务必用环境变量固化:
,否则容器重启后配置丢失
SSL/TLS 握手失败(cURL error 35)怎么确认和绕过
网络通、DNS 解得开,但连不上 HTTPS,大概率是协议或证书链问题:
运行
看
是否存在且可读
应返回你指定的 PEM 文件路径;若为空,说明没配对,或证书格式不对(必须是 PEM,不能是 DER)
临时绕过验证仅用于诊断:
,若此时成功,100% 是证书链或协议问题——但执行完立刻删掉该环境变量
Windows 用户还要检查
中
是否指向有效证书文件(如
)
真正卡住的地方往往藏在
的输出里,或者
最后几行 —— 别只盯着错误关键词,要看它到底停在哪一层:DNS、TCP、TLS、HTTP 还是子进程执行。每个环节对应的参数和排查手段完全不同,混着调只会掩盖真实瓶颈。
composer.jsonping packagist.orgunknown host8.8.8.8114.114.114.114http.timeoutcurl -I https://packagist.orgFailed to connecthttps://packagist.orghttps://github.comcomposer clear-cachecomposer.jsonrepositoriesconfig -ghttps://mirrors.tuna.tsinghua.edu.cn/composer//composer config -g repo.packagistcomposer config repo.packagist-gcomposer config -g http.timeout 600/packages.jsongit clonegit config --global core.sshCommand "ssh -o ConnectTimeout=30"composer config -g github-protocols httpsCOMPOSER_PROCESS_TIMEOUT=0php -r "print_r(openssl_get_cert_locations());"default_cert_filecomposer config -g cafileCOMPOSER_NO_SSL=1 composer installphp.inicurl.cainfocurl-ca-bundle.crtcomposer diagnosecurl -v