卡在Resolving dependencies是因无法连接元数据源,需分层排查:先用curl测试连通性,再检查镜像配置是否正确(键名、类型、URL末尾斜杠),DNS污染时强制IPv4,TLS失败则换DNS或镜像。

超时不是配一个 --timeout 就能解决的——它分三层:DNS 解析卡住、HTTP 下载卡住、子进程执行卡死,每层要调的参数和排查手段完全不同。
卡在 Resolving dependencies 怎么办
这不是超时问题,是根本连不上元数据源。日志停在这行,说明 Composer 还没开始下载,连 packages.json 都没拿到。
- 先用
curl -I https://packagist.org/packages.json测试连通性;返回SSL connect error或长时间无响应,大概率是 TLS 握手失败或 DNS 污染 - 强制走 IPv4:
CURL_IPRESOLVE=4 composer install(Linux/macOS)或set CURL_IPRESOLVE=4 && composer install(Windows CMD) - 换 DNS:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf,再试 - 检查镜像配置是否写对:
composer config -g repo.packagist输出必须是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}—— 键名错成repos.packagist.org、漏掉composer类型、URL 少末尾/,都会静默失效
卡在 Downloading https://... 怎么调
这是 HTTP 层超时,http.timeout 才管用。默认 60 秒,下载大包(比如 laravel/framework)或首字节延迟高时,它最先炸。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
http.timeout控的是单次 HTTP 请求(含 DNS 查询、TLS 握手、首字节等待、body 传输),建议设为300~600 - 设法:
composer config -g http.timeout 600,或运行时加环境变量COMPOSER_HTTP_TIMEOUT=600 composer install - 注意:
http-basic.timeout是 v1 废弃项,v2 完全不读,设了白设 - 如果用的是国内镜像但还卡在
Downloading https://api.github.com/...,说明镜像只加速 ZIP 包,GitHub API 元数据请求仍需认证——必须配 GitHub Token
卡在 Executing command (CWD: ...) 怎么破
常见于 git clone、unzip、post-install-cmd 脚本卡死,process-timeout 才起作用。它控制整个命令从 start 到 finish 的总耗时上限,默认 300 秒,大项目很容易超。
-
process-timeout推荐设为1200(20 分钟):composer config -g process-timeout 1200 - 环境变量
COMPOSER_PROCESS_TIMEOUT=1200比命令行--timeout=1200更可靠,能覆盖插件和自定义 installer 启动的子进程 - 若卡在
git clone,优先改用 HTTPS 克隆(把"git@github.com:user/repo.git"换成"https://github.com/user/repo.git"),并配好 Git 超时:GIT_SSH_COMMAND="ssh -o ConnectTimeout=10" -
--prefer-dist强制下 ZIP 包而非源码,能绕过大部分 git 相关卡点
CI 环境下怎么稳住 composer install
CI 更容易超时,光拉长 timeout 不够,得组合出手,且顺序不能乱。
- 必须先配国内镜像:
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/(注意末尾/) - 必须配 GitHub Token:
composer config --global github-oauth.github.com $GITHUB_TOKEN,Token 权限至少勾选repo和read:packages,文件权限设为600 - 强制 dist + 跳过非必要步骤:
composer install --prefer-dist --no-scripts --no-plugins --no-interaction - 环境变量比命令行参数优先级高:
COMPOSER_PROCESS_TIMEOUT=1200 COMPOSER_HTTP_TIMEOUT=600 composer install - 别信
--ignore-platform-reqs,它掩盖真实兼容性问题,只在明确知道缺失扩展不影响构建时才加
最常被忽略的是:composer config -g repo.packagist 写错键名或 URL 格式,会导致镜像配置完全不生效,但日志里看不出任何报错——它就安静地继续直连 packagist.org,然后在墙外慢慢超时。

















