composer卡住需分两类超时处理:卡在downloading https://时调http-timeout(默认300秒,建议设600),卡在installing dependencies或报the process timed out时调process-timeout(默认300秒,建议设1800),二者独立生效,混用或只改其一无效。

Composer 卡住,不能只调一个 timeout —— 它分两类:网络下载(http-timeout)和本地命令执行(process-timeout),设错地方完全无效。
卡在 Downloading https://?该调 http-timeout
这是 PHP cURL 或 stream 层等不及响应,不是 Composer 慢。典型错误包括:Could not fetch https://repo.packagist.org/packages.json、curl error 28、反复重试后失败,或卡在 Downloading https://mirrors.aliyun.com/。
-
http-timeout控制所有 HTTP 请求(拉取packages.json、下载 ZIP 包)最大等待秒数,默认 300 秒 - 项目级设置最稳妥:
composer config http-timeout 600,写入当前composer.json的"config"段 - 全局设置影响所有项目:
composer config --global http-timeout 600,写入~/.composer/config.json - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=600 composer install - 注意:
http-basic和github-oauth配置项完全不干预超时;若用私有源,还要检查 Nginx 的proxy_read_timeout和 PHP CLI 模式下的default_socket_timeout(运行php -i | grep default_socket_timeout查看)
卡在 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 不可达或脚本死循环,会无限卡住
为什么改了 --process-timeout 还报网络错误?
因为 process-timeout 对 HTTP 层完全无效。你看到的 curl error 28、Connection timed out 或 failed to open stream 都是 PHP cURL 或 stream 层的问题,根源在 http-timeout 或 PHP 底层配置。
- 先运行
php -i | grep default_socket_timeout,CLI 模式下若值太小(如 60),会提前中断 - 临时绕过:
php -d default_socket_timeout=600 $(which composer) install - 长期方案:修改 CLI 专用
php.ini(路径用php --ini查),调高default_socket_timeout和max_execution_time - 更治本的做法是换镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
怎么确认到底卡在哪一类超时?用 -v + 环境变量组合验证
-v 是定位的关键,它能暴露最后执行的命令。光看报错文字容易误判。
- 运行
composer install -v,观察最后输出的Running command (CWD):是不是长时间没反应 - 如果最后卡在
git clone https://或unzip -qq,说明是process-timeout触发 - 如果最后卡在
Downloading https://或报cURL error 28,说明是http-timeout触发 - 临时加环境变量验证:
COMPOSER_HTTP_TIMEOUT=600 COMPOSER_PROCESS_TIMEOUT=1800 composer install -v,对比行为变化
真正容易被忽略的是 PHP CLI 模式的 default_socket_timeout —— 它比 Composer 配置更底层,且默认值常为 60 秒,会直接截断 cURL 请求,导致你调高 http-timeout 也无济于事。










