composer update 卡在 updating dependencies 阶段主要是因默认 http 超时过短(300秒)及国内直连 packagist 官方源受 dns 污染、tls 握手慢等影响;应优先切换阿里云或腾讯云镜像源,并关闭 xdebug。

Composer update 卡在 Updating dependencies 阶段
这是最典型的超时表现:命令长时间无响应,终端停在 Updating dependencies 或 Resolving dependencies,偶尔伴随 Connection timed out 或 Failed to download 错误。根本原因不是网络“断了”,而是 Composer 默认的 HTTP 超时太短(通常 300 秒),而国内直连 Packagist 官方源(https://packagist.org)常因 DNS 污染、TLS 握手慢或中间路由抖动导致单次请求卡住。
- 临时提速:运行
composer config -g repo.packagist composer https://packagist.phpcomposer.com切换为国内镜像(注意该镜像已停用,推荐改用腾讯或阿里源) - 更可靠做法:执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云源)或composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/(腾讯云源) - 若项目级配置优先级更高,去掉
-g参数,在项目根目录下运行对应命令
Composer install/update 报 cURL error 28: Operation timed out
cURL error 28 是超时的明确信号,说明底层 HTTP 请求被系统级中断。它和 Composer 自身的 timeout 设置无关,而是受 PHP 的 default_socket_timeout 和 cURL 的 CURLOPT_TIMEOUT 影响。
- 检查当前 PHP 配置:运行
php -i | grep default_socket_timeout,若值 ≤ 60,需调高 - 临时覆盖:执行
php -d default_socket_timeout=600 composer update(把超时设为 10 分钟) - 永久修改:编辑
php.ini,将default_socket_timeout = 600,然后重启 PHP-FPM 或 Web 服务 - 避免全局改 PHP 配置?可直接改 Composer 的 cURL 行为:在
composer.json里加"config": { "process-timeout": 0, "fxp-asset": { "timeout": 600 } }(注意fxp-asset仅影响旧版插件)
使用 --no-plugins 和 --no-scripts 绕过耗时扩展
某些 Composer 插件(如 hirak/prestissimo 旧版、fxp/composer-asset-plugin)或自定义 scripts(比如 post-update-cmd 中执行 npm install)会在依赖解析阶段阻塞主流程,造成“假性超时”。尤其当插件内部未设置超时或重试逻辑时,容易无限等待。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先验证是否插件导致:运行
composer update --no-plugins --no-scripts,如果快速完成,说明问题出在插件或脚本 - 禁用特定插件:用
composer update --no-plugins排查,再逐个启用确认是哪个插件拖慢 - 更新插件本身:例如
composer global update hirak/prestissimo(新版已合并进 Composer 2.x,无需单独装) - 脚本优化:把耗时操作(如前端构建)从
post-update-cmd移到 CI 流程或手动触发,避免每次 update 都跑一遍
Composer 2.x 下仍超时?检查是否启用了 xdebug
开启 xdebug 会让 Composer 执行速度下降 3–5 倍,尤其在依赖图复杂时,Resolving dependencies 阶段 CPU 占用飙升但进度几乎不动,看起来像超时。这不是网络问题,而是 PHP 解释器开销暴增。
- 快速验证:运行
php -v看是否含xdebug;再执行php -m | grep xdebug - 临时关闭:Linux/macOS 下
php -d zend_extension= -d xdebug.mode=off composer update - 开发环境建议:用
php.ini分环境配置,生产或 CLI 场景禁用 xdebug,Web 请求按需开启 - 别忽略 .gitignore:有些项目把
vendor/提交了,导致composer update实际在做全量重装而非增量更新——先删vendor/和composer.lock再试(慎用于生产分支)
真正卡住的时候,别急着调大 timeout,先分清是网络、PHP 层、插件还是调试工具的问题。四个方向里,切镜像源和关 xdebug 覆盖了 80% 的真实场景。










