必须设http-timeout,因卡在“downloading https://”属http层超时,错误如curl error 28或could not fetch packages.json,与process-timeout、http-basic等无关;默认300秒,可项目级设composer config http-timeout 600、全局设--global或临时用composer_http_timeout=600。

直接结论:必须设 http-timeout,不是 process-timeout,也不是 http-basic 或其他配置项。
卡在 “Downloading https://” 时该调哪个参数
这是 HTTP 层超时,错误典型如 Could not fetch https://repo.packagist.org/packages.json、curl error 28、反复重试后失败。根本原因是 PHP 的 cURL 或 stream 层等不及响应,和 git、解压、脚本执行完全无关。
-
http-timeout控制所有 Composer 发起的 HTTP 请求(拉取packages.json、下载 ZIP 包)最大等待秒数,默认 300 秒 - 设错地方完全无效:改
process-timeout或http-basic对这类卡顿毫无作用 - 临时生效优先级最高:
COMPOSER_HTTP_TIMEOUT=600 composer install - 项目级写入:
composer config http-timeout 600(会加到当前composer.json的"config"段) - 全局生效:
composer config --global http-timeout 600(写入~/.composer/config.json)
为什么设了 http-timeout 还报超时
因为 PHP CLI 自身的 socket 超时可能更早掐断连接。运行 php -i | grep default_socket_timeout 查看值,若为 60 或更低,即使 http-timeout 设成 1200,也会在 60 秒时中断。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时绕过:
php -d default_socket_timeout=600 $(which composer) install - 长期方案:修改 CLI 专用
php.ini(路径用php --ini查),调高default_socket_timeout和max_execution_time - 镜像源本身慢或 DNS 不稳,比调超时更值得优先排查——换阿里云镜像、加
--dns 223.5.5.5常比硬扛超时更有效 - 私有源场景下,Nginx 的
proxy_read_timeout可能卡住后端响应,需同步检查
别踩 process-timeout 的坑
这个参数只管子进程(如 git clone、unzip、php artisan optimize),错误里一定含 [RuntimeException] The process timed out.。它对 HTTP 层完全无效,所以看到 curl error 28 或 failed to open stream 时调它是白忙。
-
composer config --global process-timeout 1800在新版中已废弃,静默不生效 - 真正有效的全局方式是环境变量:
export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS)或 Windows 系统变量 - 设为 0 表示禁用检查,但真遇到 Git 不可达或脚本死循环会无限卡住,不推荐
- 注意硬限制:超过 7200 秒会被 Composer 自动回退到默认 300 秒,不报错也不提示
最常被忽略的是 PHP 底层的 default_socket_timeout —— 它比 Composer 配置更早生效,且无法通过 Composer 命令覆盖,只能靠 php -d 或改 php.ini 绕过。










