发布于2026-07-17 阅读(0)
扫一扫,手机访问
关于 Composer 卡住的问题,我得说这事儿得分开看。它其实分两类超时:一种是网络层面的 HTTP 请求超时,另一种是本地命令执行的进程超时。设错了地方,改了等于白改。

Composer 卡住,不能只调一个 timeout —— 它分两类:网络下载(http-timeout)和本地命令执行(process-timeout),设错地方完全无效。
http-timeout这类错误是 PHP cURL 层的网络请求超时,和 git、解压、脚本完全无关。典型表现包括 Could not fetch https://repo.packagist.org/packages.json、反复重试后失败、或卡在 Downloading https://mirrors.aliyun.com/... 不动了。
关键点如下:
http-timeout 控制 Composer 发起的所有 HTTP 请求(拉取元数据、下载 ZIP 包)的最大等待秒数,默认 300 秒composer config http-timeout 600,写入当前 composer.json 的 "config" 段composer config --global http-timeout 600,影响所有项目COMPOSER_HTTP_TIMEOUT=600 composer installhttp-basic、github-oauth 配置项不干预超时;若用了私有源,还得检查 Nginx 的 proxy_read_timeout 和 PHP 的 default_socket_timeout(运行 php -i | grep default_socket_timeout 查看 CLI 模式值)process-timeout这类错误是子进程(比如 git clone、unzip、php artisan optimize)跑太久被杀,错误里常带 [RuntimeException] The process timed out. 或 Symfony\Component\Process\Exception\ProcessTimedOutException。
把握以下几个要点:
process-timeout 默认 300 秒,只管子进程执行时长,不影响任何网络行为composer config process-timeout 1800,写入当前 composer.jsoncomposer config --global process-timeout 在新版中无效,别信老教程export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS),Windows 下设系统变量composer install --process-timeout=1800 或 COMPOSER_PROCESS_TIMEOUT=1800 composer update0 表示禁用检查,但不推荐——真遇到 Git 不可达或脚本死循环,会无限卡住-v + 环境变量组合验证加 -v 能暴露最后执行的命令,是定位的关键:
composer install -v,看最后输出的 Running command (CWD): ... 是不是长时间没反应git clone 或 php ./vendor/bin/phpunit,说明是 process-timeout 问题Downloading https://...,说明是 http-timeout 问题composer install --no-scripts,如果不再卡,说明问题出在 post-install-cmd 等脚本里composer diagnose -v | grep timeout,它会打印当前实际读取的 http-timeout 和 process-timeout 值国内用户最常忽略的一点:超时只是表象,根源往往是源慢或不可达。
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/http-timeout 也没用,得同步调 Git:git config --global http.postBuffer 524288000post-install-cmd 脚本稳定要 12 分钟,大概率该优化逻辑或拆分任务,而不是设成 3600hirak/prestissimo)在高并发下载时可能触发子进程调度异常,导致误判超时
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8