Composer“没反应”实为卡在具体环节:停在Resolving dependencies是SAT求解器死循环,需调高memory_limit并用-vvv观察;停在Downloading是HTTP超时,应验证镜像URL是否返回200;停在Executing command是子进程卡死,process-timeout才生效;Generating autoload files无响应多因WSL2 symlink慢、APCu未启用或权限问题。

Composer 执行后“没反应”,基本不是真卡住,而是卡在某个具体环节没输出——不看 -vvv 最后几行,所有操作都是蒙的。
停在 Resolving dependencies 是 SAT 求解器在死循环,不是网络慢
这一行出现后长时间不动,说明 Composer 还没发任何 HTTP 请求,纯粹在本地暴力回溯版本约束。常见诱因:
- composer.json 里写了过于宽泛的约束,比如
"^1.0 || ^2.0"或"dev-main"引入私有包导致依赖图成环 - PHP 内存不足(CLI 模式下常默认 128M),求解器一开就爆,进程被 OOM Killer 杀掉,终端静默退出
- 用了低版本 Composer(如 1.x)跑在 PHP 8.2+ 上,反射 API 不兼容,卡在解析阶段无报错
此时调 http.timeout、换镜像、清缓存全无效。应先运行:php -d memory_limit=3G composer update -vvv,并观察最后几行是否反复出现 Trying: vendor/package 或 Aborting, because...。
停在 Downloading https://... 是单次 HTTP 请求超时,http.timeout 才管用
看到这行且后续无进展,大概率是 cURL 卡在 TLS 握手或响应等待中。注意:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
process-timeout在这个阶段完全不生效,设再大也没用 - 必须验证镜像 URL 是否真实可用:
curl -I https://mirrors.aliyun.com/composer/packages.json,返回 200 OK 才算通 - 阿里云当前有效地址是
https://mirrors.aliyun.com/composer/(结尾不带packages.json);清华源已弃用 HTTP,HTTPS 地址为https://packagist.phpcomposer.com,但近期偶发不可用 - 临时调试优先用环境变量:
COMPOSER_HTTP_TIMEOUT=600 composer install,避免污染全局配置
停在 Executing command (CWD: ) 是子进程卡死,process-timeout 才起作用
常见于 git clone 私有仓库、unzip 大文件、或执行 post-install-cmd 脚本。现象是终端停在某条命令上,几小时不动。
- 这个阶段只有
process-timeout或COMPOSER_PROCESS_TIMEOUT生效,建议设为1200 - 某些插件(如 phpstan)会在安装时加载大量类,加
--no-plugins可快速验证是否插件拖累 - 私有 Git 仓库若用 SSH 地址(
git@xxx),需确认ssh-agent已启动且 key 已添加,否则git clone会卡在密码提示 - WSL2 下若启用了元数据(metadata)支持,
git clone可能因 symlink 解析异常变极慢,可临时关掉:echo -e "[automount]\noptions = \"metadata\"">> /etc/wsl.conf && wsl --shutdown
Generating autoload files 后无响应,问题在文件系统或 APCu
这一阶段已下载完所有包,开始生成 vendor/autoload.php。不动了,往往不是 Composer 的锅:
- WSL2 下 symlink 解析慢,尤其当
vendor/在 Windows 文件系统挂载点时,生成 classmap 会巨慢 - APCu 未启用 CLI 模式(
apc.enable_cli=1),导致 autoloader 缓存失效,反复扫描文件 -
vendor/目录权限异常(如 root 写入、当前用户无读权限),composer dump-autoload会静默失败 - 误配 autoload:比如把整个
vendor/加进psr-4映射,导致 Composer 扫描全部第三方代码
可手动试:php -d apc.enable_cli=1 vendor/bin/composer dump-autoload --optimize-autoloader --classmap-authoritative,看是否恢复响应。
最易被忽略的是:CI 环境中 composer install 静默失败,往往因为 COMPOSER_MEMORY_LIMIT=-1 触发 PHP 内存检查失败,反而导致进程被 kill;正确做法是设为 2G 或 3G,并确保宿主机或容器内存分配足够。

















