Composer装包超时本质是curl或openssl层网络卡顿,非Composer本身慢;应优先换国内镜像源(如阿里云),再设http.timeout=600、http.connect-timeout=60、http.max-retries=3,而非盲目调高总超时。
Composer 装包超时,本质是网络请求卡在或层,不是 Composer 本身“慢”,而是它默认的超时策略太保守,尤其在国内直连 Packagist 官方源时几乎必现。
为什么
卡在 “Downloading…” 就不动了?
常见现象是终端停在类似
这一行,几秒后报错
或直接中断。这不是包损坏,也不是 PHP 配置问题,而是 Composer 底层用
下载时触发了默认的 300 秒总超时(
影响不大,真正起作用的是
的
和
)。
默认连接超时约 300 秒,但国内直连
经常首包延迟高、TLS 握手慢,容易卡在 connect 阶段
Composer 1.x 和 2.x 对超时参数处理不同:2.x 默认启用并行下载,但单个请求的超时值没变,反而更容易因某一个包拖垮整个流程
使用
源时,DNS 解析、SNI、中间 CDN 节点都可能引入不稳定因素,而 Composer 不重试失败的单个 URL
改
的
有用吗?
基本没用。Composer 自 1.10+ 起已绕过 PHP 原生 socket 设置,改
对
后端完全无效。真正要调的是 Composer 自己的超时配置:
全局设置连接超时(单位秒):
不影响超时,得用:
(先确保证书链正常),再重点设:
更关键的是
,建议同步设为
~
:
如果用的是 Composer 2.2+,还可以启用自动重试:
换国内镜像源比调超时更治本
超时只是表象,根源是网络路径不通畅。阿里云、腾讯云、华为云的 Packagist 镜像做了协议优化(HTTP/2 + 多路复用)、CDN 缓存和 TLS 加速,实测平均下载速度提升 3~5 倍,且极少触发超时。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
临时切换(仅本次命令):
永久切换(推荐):
验证是否生效:
应输出
注意:部分私有包若只发布在官方源,换镜像后会 404,此时需单独配置
数组,把私有源放在镜像之后
还有哪些隐藏坑会导致“假超时”?
有些情况看起来像超时,其实是其他机制干扰:
杀毒软件或企业防火墙劫持 HTTPS 流量,导致 TLS 握手失败 —— 表现为
,解决办法是更新 CA 证书或关闭 SSL 校验(不推荐):
PHP 的
在某些版本下与 Composer 并行下载冲突,偶尔引发僵死 —— 可临时禁用:
Windows 上用 Git Bash 运行 Composer,
可能被 Cygwin 版本覆盖,行为异常 —— 建议统一用 Windows Terminal + 官方 PHP for Windows + 原生
超时参数可以调,但别指望靠加到 1200 秒来“硬扛”。真实项目里,换镜像 + 设
+ 开
这三步做完,95% 的超时问题就消失了。剩下那些,大概率是本地环境干扰,得一层层排除
、
、DNS、代理这几环。
curlopensslcomposer installDownloading https://packagist.org/p/provider-2024-01%24xxx.jsoncURL error 28: Operation timed outcurldefault_socket_timeoutcurltimeoutconnect_timeoutcurlpackagist.orghttps://packagist.orgphp.inidefault_socket_timeoutdefault_socket_timeoutcurlcomposer config -g repos.packagist.org.type composercomposer config -g http.ssl.certificate_authority /path/to/cacert.pemcomposer config -g http.timeout 600http.connect-timeout3060composer config -g http.connect-timeout 60composer config -g http.max-retries 3composer install --repository=https://mirrors.aliyun.com/composer/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/composer config -g repo.packagist{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}repositoriesSSL certificate problem: unable to get local issuer certificatecomposer config -g secure-http falseopcache.enable_cli=1php -d opcache.enable_cli=0 composer installcurlcurl.exehttp.connect-timeoutmax-retriescurlopenssl