Composer卡住需先定位层级:Resolving dependencies是DNS问题;Downloading是HTTP超时,调http.timeout;Executing command是子进程超时,调process-timeout;Generating autoload files则非网络问题。

composer install 或 composer update 卡住、报错,本质是两类超时在打架:HTTP 请求卡在下载包,子进程卡在解压或执行脚本。调错参数只会干等,得先分清卡在哪一层。
看 -vvv 输出最后一行,定位卡点类型
运行 composer install -vvv,紧盯最后几行输出:
- 停在
Resolving dependencies:DNS 或源域名不通,和 timeout 无关;试试dig packagist.org或换 DNS(如114.114.114.114) - 停在
Downloading https://...:HTTP 层卡住,该调http.timeout(控制 DNS+TLS+首字节+body 总耗时) - 停在
Executing command (CWD: ...)后跟着git clone或unzip:子进程超时,process-timeout才管用 - 停在
Generating autoload files后不动:不是网络问题,可能是 WSL2 symlink 解析慢、APCu 未启用 CLI 模式等
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:默认仅 300 秒(Composer 2.x),影响单次 HTTP 请求全流程(含 DNS 查询、TLS 握手、首字节等待、整个 body 传输)。大包(如laravel/frameworkdist)或镜像首字节延迟高时最先触发。建议设为600~1200 -
process-timeout:默认也是 300 秒,但它是整个composer install命令的总生命周期上限,包含依赖解析、下载、解压、运行post-install-cmd、生成 autoloader 等所有步骤。大项目跑脚本容易超,建议设为1200~1800 - 注意:
http-basic-timeout是 Composer 2.2+ 新增项,只控单次 HTTP 连接/读取,旧版本不识别;而config.timeout在 composer.json 里完全无效,别写
必须同步检查 PHP 的 default_socket_timeout
http.timeout 设再大也没用,如果 PHP 自身的 socket 超时更短——它会提前掐断连接。
- 查当前值:
php -i | grep default_socket_timeout - 常见 CLI 默认值是
60,远低于你设的600,必须同步调高 - 临时改:
php -d default_socket_timeout=1200 composer install - 永久改:编辑
php.ini中的default_socket_timeout = 1200
CI/CD 和 Docker 环境要额外防坑
这些环境更容易超时,光拉长 timeout 不够,得组合出手:
- 强制用国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 禁用回源(避免绕过镜像直连 GitHub):
composer config -g repos.packagist.allow-downloads false - 强制走 dist 包:
--prefer-dist,跳过git clone类操作 - 环境变量比命令行参数更可靠:
COMPOSER_PROCESS_TIMEOUT=1200能覆盖插件启动的子进程,--timeout=1200有时会被忽略 - Docker 内若用 WSL2,注意元数据导致 symlink 极慢,可加
noatime,uid=1001,gid=1001挂载选项优化

















