Composer下载超时本质是配置与国内网络不匹配:需同步调高http.timeout(建议600秒)和process-timeout(建议1800秒),换阿里云等国内镜像源并验证生效,同时确保PHP default_socket_timeout不低于http.timeout,并排查DNS、TLS及git clone等底层问题。

Composer下载慢导致超时,本质不是“网速差”,而是默认配置与国内网络环境严重不匹配——http.timeout太短、process-timeout被误设、镜像源未生效、DNS和TLS握手卡顿这四点叠加,才会反复卡在 Downloading https:// 或直接报 cURL error 28。
怎么判断是 HTTP 下载卡住还是子进程执行卡死
运行 composer install -vvv,盯住最后一行输出:
- 停在
Resolving dependencies:大概率是 DNS 解析失败或packagist.org域名无法访问,跟 timeout 无关,该换 DNS(如114.114.114.114)或检查 hosts - 停在
Downloading https://mirrors.aliyun.com/...:HTTP 层超时,必须调http.timeout(默认仅 60 秒,弱网下极易触发) - 停在
Executing command (git clone https://github.com/...):子进程卡死,process-timeout才起作用(它管的是整个命令生命周期,含解压、脚本执行等)
必须同步调高 http.timeout 和 process-timeout
http.timeout 和 process-timeout 是两套独立机制,设错一个就白忙:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
http.timeout控制单次 HTTP 请求总耗时(DNS + TLS 握手 + 首字节等待 + body 传输),建议设为600:composer config -g http.timeout 600 -
process-timeout控制整个composer install命令最大允许时间(含git clone、unzip、post-install-cmd),默认 300 秒远远不够,建议设为1800:composer config -g process-timeout 1800 - 注意:
php -i | grep default_socket_timeout查出的 PHP CLIdefault_socket_timeout若低于你设的http.timeout(常见值是 60),会提前掐断连接——务必同步调高,例如:echo "default_socket_timeout = 600" >> /usr/local/etc/php/conf.d/docker-php-ext.ini
换镜像源必须全局生效且验证是否真走镜像
只改项目级 composer.json 的 repositories 没用——composer create-project、composer global require 全部绕过它,仍直连国外源:
- 正确命令(Composer ≥2.2):
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repos.packagist输出应为镜像 URL;再跑一次composer install -vvv,看日志里下载地址是不是mirrors.aliyun.com - 旧版 Composer(1.x)需用:
composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}' - 项目级若已定义
repositories,会覆盖全局配置,此时要删掉或显式改成镜像地址
虚拟机/Docker 环境还要额外处理 DNS 和文件系统
在 VirtualBox、Parallels、Docker for Mac/Windows 中,Composer 卡顿常和网络栈 NAT/桥接、挂载卷 I/O 延迟强相关:
- 编辑
/etc/resolv.conf,只保留可信 DNS:nameserver 114.114.114.114nameserver 223.5.5.5 - 禁用
systemd-resolved(如启用):sudo systemctl disable --now systemd-resolved - 别在宿主机挂载目录(如
-v /Users/xxx/project:/var/www)里直接跑composer install——vendor 解压会慢到怀疑人生;应复制代码进容器本地磁盘,或用命名卷缓存 vendor:docker run -v $(pwd):/app -v myapp-vendor:/app/vendor php:8.3-cli composer install
最易被忽略的一点:很多项目硬编码了 repositories 或用了 "type": "git" 依赖,镜像源对这类包完全无效,此时真正瓶颈是 git clone 自身的 DNS/TLS/代理问题,得单独配 Git 超时或强制走 HTTPS。

















