Composer超时必须分两路调:网络下载卡在Downloading https://时调http-timeout,本地命令卡在Installing dependencies或报The process timed out时调process-timeout;二者独立生效,混用或只改其一无效。

Composer 超时必须分两路调:网络下载卡在 Downloading https://,该调 http-timeout;本地命令卡在 Installing dependencies 或报 The process timed out,该调 process-timeout。混用或只改一个,问题照旧。
卡在 Downloading https://?调 http-timeout
这是 PHP cURL 或 stream 层等不及响应,不是 Composer 慢,而是底层网络等待超限。典型错误包括:Could not fetch https://repo.packagist.org/packages.json、curl error 28、反复重试后失败。
-
http-timeout控制所有 HTTP 请求(拉取packages.json、下载 ZIP 包)最大等待秒数,默认 300 秒 - 项目级设置:
composer config http-timeout 600,写入当前composer.json的"config"段 - 全局设置:
composer config --global http-timeout 600,影响所有项目 - 临时覆盖(优先级最高):
COMPOSER_HTTP_TIMEOUT=600 composer install - 别被
http-basic迷惑——它只管认证,完全不干预超时 - PHP 底层也有限制:
php -i | grep default_socket_timeout,CLI 模式下若值太小(如 60),会提前中断;可临时绕过:php -d default_socket_timeout=600 $(which composer) install
卡在 Installing dependencies 或报 The process timed out?调 process-timeout
这是子进程(比如 git clone、unzip、php artisan optimize)跑太久被杀,和网络无关。错误里一定含 [RuntimeException] The process timed out.,加 -v 可看到最后执行的那条命令。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout默认 300 秒,只管子进程执行时长,不影响任何 HTTP 行为 - 项目级配置最安全:
composer config process-timeout 1800(30 分钟),写入当前composer.json - 全局配置已废弃:
composer config --global process-timeout在新版中无效,别信老教程 - 真正有效的全局方式是环境变量:
export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS),Windows 下设系统变量 - 临时调试:
composer install --process-timeout=1800或COMPOSER_PROCESS_TIMEOUT=1800 composer update - 设为
0表示禁用检查,但不推荐——Git 不可达或脚本死循环时会无限卡住
怎么验证配置生效?常见失效原因
运行 composer config process-timeout 或 composer config http-timeout 可查当前值,但以下情况会导致“看似设了却没用”:
- 项目
composer.json中已有"config": {"process-timeout": 300},全局配置不会覆盖它 - 某些旧版 Composer(如
^2.0以下)对process-timeout支持不稳定,建议升级到^2.2或更高 - 错误不是超时导致的:比如
Allowed memory size exhausted是内存溢出,得调memory-limit,不是process-timeout的事 - 真卡死时,异常堆栈里必须出现
Symfony\Component\Process\Exception\ProcessTimedOutException,这是唯一判断依据 - 用
--no-scripts跳过脚本再试,如果正常,说明问题出在post-install-cmd或post-update-cmd
比调超时更关键的事:先换镜像源
国内用户直接调高 http-timeout 是治标。更有效的是切阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。这能大幅减少 Could not fetch 类错误,且不依赖超时容忍度。
另外,process-timeout 设太高可能掩盖真实问题——比如一个脚本稳定要 10 分钟,大概率该拆分或加进度反馈,而不是无限制拉长 timeout。

















