卡在downloading https://应调http-timeout,它控制composer发起的http请求最大等待秒数,默认300秒,可项目级设composer config http-timeout 600、全局设--global或临时用composer_http_timeout=1200覆盖;同时需检查php底层default_socket_timeout是否过小,并优先换用国内镜像源验证生效。

卡在Downloading https://?该调 http-timeout
这是弱网下最典型的症状,比如报 Could not fetch https://repo.packagist.org/packages.json、curl error 28 或反复 retry 后失败。根本不是 Composer 慢,而是它默认只等 300 秒,而你的网络可能 DNS 解析慢、TLS 握手卡顿、中间代理抖动——这些都会让单次 HTTP 请求耗时远超预期。
-
http-timeout控制的是 Composer 自己发起的 HTTP 请求(拉取packages.json、下载 ZIP 包)最大等待秒数,和git clone、解压、脚本执行完全无关 - 项目级设置:
composer config http-timeout 600,写入当前composer.json的"config"段 - 全局设置:
composer config --global http-timeout 600,影响所有项目(推荐国内用户统一设为 600~1200) - 临时覆盖(优先级最高):
COMPOSER_HTTP_TIMEOUT=1200 composer install - 注意:
http-basic、github-oauth配置项对超时毫无影响;若用了私有源,还得检查 Nginx 的proxy_read_timeout是否卡住后端
PHP 底层 socket 超时也会中断连接
就算你把 http-timeout 设到 1200,如果 PHP CLI 模式下的 default_socket_timeout 还是默认 60 秒,cURL 或 stream 层照样会在 60 秒时断开——这个值不走 Composer 配置,得单独查和调。
- 先确认当前值:
php -i | grep default_socket_timeout,常见值是 60,不够用 - 临时绕过(调试/CI 推荐):
php -d default_socket_timeout=1200 $(which composer) install - 不建议永久改 php.ini,因为会影响其他 CLI 脚本;环境变量或命令行参数更可控
process-timeout 和 http-timeout 完全不是一回事
如果你看到的是 [RuntimeException] The process timed out. 或卡在 Installing dependencies 不动,CPU/磁盘几乎没压力,那一定是 process-timeout 在起作用——它只管子进程(如 git clone、unzip、php artisan optimize)跑了多久,和网络下载无关。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 设高
process-timeout对Could not fetch类错误完全无效 - 项目级推荐:
composer config process-timeout 1800(30 分钟),写入当前composer.json - 全局配置
composer config --global process-timeout在新版中已废弃,别信老教程 - 真正有效的全局方式是环境变量:
export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS)或 Windows 系统变量 - 加
-v参数运行可定位卡点:composer install -v,看最后输出的命令是否长时间无响应
换镜像比硬调 timeout 更治本
单纯延长超时只是“耐心等失败”。国内用户更应优先切换稳定镜像,并确认它真生效了。
- 阿里云镜像(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repos.packagist输出应为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 手动测可用性:
curl -I https://mirrors.aliyun.com/composer/packages.json,秒回HTTP/2 200才算通 - 若仍超时,问题大概率出在本地:Windows 自动代理检测、macOS PAC 脚本、杀毒软件 HTTPS 扫描、公司防火墙拦截长连接
- 企业网必备:
export HTTPS_PROXY=http://your-proxy:8080(只设HTTP_PROXY没用,Composer 默认全走 HTTPS)
弱网环境下最常被忽略的其实是 PHP 底层的 default_socket_timeout 和镜像是否真实生效——这两个点不排查清楚,光调 http-timeout 和 process-timeout 很可能白忙活。










