卡在“updating dependencies”是sat求解器暴力回溯导致的依赖冲突死锁,非网络问题;应运行composer why-not定位阻断链,或收窄版本约束、注释require-dev、使用--with-all-dependencies跳过校验。

卡在 “Updating dependencies” 不等于网络慢,90% 是依赖求解器(SAT)在暴力回溯,和代理、DNS 没关系;真卡在网络层时,实际停在的是 “Resolving dependencies” 或 “Downloading” —— 别被日志误导。
卡在 Resolving dependencies:这才是 DNS 或代理问题
这行输出一出现就长时间不动,说明 Composer 还没发任何 HTTP 请求,只是在查域名、建 TCP 连接、做 TLS 握手。http.timeout 完全无效,改了也没用。
- 手动验证镜像连通性:
curl -I https://mirrors.aliyun.com/composer/packages.json,返回 200 OK 才算通 - 如果卡在
Resolving host或TCP connect,换 DNS(比如114.114.114.114)或临时加 hosts:121.40.187.156 mirrors.aliyun.com(以当前阿里云 CDN IP 为准) - 公司内网常见于中间人代理未导入根证书,
-vvv最后一行若报error:14090086就是它,不是超时 - 确认镜像配置没被覆盖:
composer config -g repos.packagist和项目内composer config repo.packagist都要查,还要看$COMPOSER_REPO_PACKAGIST环境变量
卡在 Downloading https://:http.timeout 才管用
看到 Downloading https://mirrors.aliyun.com/composer/p/xxx/ 后不动,或反复重试后静默退出,才是真正的 HTTP 层卡顿。此时 process-timeout 无效,必须调 http.timeout。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 全局设值:
composer config -g http.timeout 600(单位秒,300~600 足够) - 项目级更安全:
composer config http.timeout 600,会写入composer.json的config段 - 临时调试优先用环境变量:
COMPOSER_HTTP_TIMEOUT=600 composer install - PHP 自身的
default_socket_timeout也会干扰,可绕过:php -d default_socket_timeout=600 $(which composer) install
卡在 Updating dependencies:大概率是 SAT 求解器死锁
这行日志之后无下载、无报错、CPU 占用高、内存缓慢上涨——基本可以确定是依赖约束太宽或冲突太深,SAT 在指数级回溯。清缓存、换镜像、调 timeout 全部无效。
- 先运行
composer why-not vendor/package定位冲突源头,比瞎猜快得多 - 把模糊版本号写死,例如把
"monolog/monolog": "^2.0"改成"monolog/monolog": "2.10.0" - 临时注释掉
require-dev,再composer install,确认主依赖是否干净 - CI 场景下可用
--with-all-dependencies跳过部分兼容校验,快速生成 lock 文件 - 升级到
Composer 2.9.6,新版求解器对复杂依赖收敛更快
容易被忽略的硬伤点
真正拖垮 Composer 的,往往不是配置本身,而是那些“看起来无关”的底层限制:
-
composer.lock文件权限异常(尤其 WSL2 或 Docker 中),会导致 autoload 生成卡在最后一步 - PHP CLI 模式下 APCu 未启用,
Generating autoload files会慢 3~5 倍 - 某些 CI 环境硬编码了
packagist.org,覆盖所有镜像设置,得查composer show -p看真实生效仓库 - 私有包用了 SSH Git URL 但没配好 key,
Executing command git clone git@xxx会卡住且不报错,需加--prefer-dist










