Composer报“git/svn executable not found”是因系统未安装对应VCS工具、PATH未正确配置、执行用户上下文不一致或协议不支持,四者缺一不可;需在纯净终端验证命令可用性并确保composer继承正确环境。

Composer 报 “git/svn executable not found”,不是 Composer 本身缺功能,而是它在当前执行环境里根本调不到对应 VCS 命令——装没装、PATH 对不对、谁在跑、协议支不支持,四者必须同时成立。
git --version 成功但 composer diagnose 仍报错
这是典型的环境错位:你在交互式终端(如 zsh)里配好了 PATH,但 Composer 实际由 Web 服务(www-data)、CI runner(GitHub Actions 的 runner 用户)、Docker 容器或 IDE 内置终端触发,这些上下文默认不加载你的 ~/.zshrc 或 ~/.bash_profile。
- 新开一个纯净终端(关掉所有已有窗口再开),运行
git --version和which git,确认输出有效 - 立刻运行
composer diagnose,看是否仍有Git binary not found警告 - 检查 shell 配置中是否有类似
[[ -n $PS1 ]] && export PATH=...这类只对交互式 shell 生效的判断,非交互式 shell 会跳过 - 临时验证:用完整路径调用,例如
GIT_EXECUTABLE=/opt/homebrew/bin/git composer diagnose
Windows 上 “git 不是内部或外部命令”
几乎 100% 是 Git for Windows 安装时漏选了 “Add Git to the system PATH” —— 这个选项才把 git.exe 加进系统级 PATH,否则 GitHub Desktop、VS Code 内置 Git 都不等于系统可用。
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
- 检查路径是否存在:
C:\Program Files\Git\bin\git.exe或C:\Users\{user}\AppData\Local\Programs\Git\bin\git.exe - 把对应
bin目录(不是cmd)加进系统环境变量PATH - 重启 CMD/PowerShell/IDE —— 已打开的窗口不会自动刷新环境变量
- 验证方式:在新 CMD 中运行
where git,有输出才算真正生效
Linux/macOS 下 which git 为空或版本太低
macOS 别依赖 Xcode 自带的阉割版 git(缺 git config 等子命令);Linux 上只装 git-core 不够,得装元包 git 才完整。
- macOS 推荐:
brew install git,并确认/opt/homebrew/bin(Apple Silicon)或/usr/local/bin(Intel)在$PATH前置位置 - Ubuntu/Debian:运行
sudo apt install git(不是git-core) - Alpine Linux(Docker):加
RUN apk add --no-cache git - 最低兼容版本:git ≥ 2.10(旧版不支持
--show-current等关键参数)
svn/hg 驱动报 “could not find driver”
Composer 原生只支持 git、svn、hg 三种 VCS 类型,且每种都要求系统已安装对应 CLI 工具;PHP 不需要额外扩展,但 proc_open 必须启用(Docker 容器中常被禁用)。
-
svn类型:需系统装了svnCLI;Composer 2.x 默认禁用 SVN 支持,需显式启用:composer config -g vcs-driver.svn true -
hg类型:需hg命令可用,且proc_open开启(检查php -i | grep disable_functions) - 运行
composer diagnose会直接列出缺失的 VCS 驱动,比手动猜快得多 - HTTPS Git 地址失败也可能退化为 “找不到驱动”:系统没可信 CA 证书 → SSL 握手失败 →
git ls-remote根本没执行成功
最易忽略的是协议和用户上下文混用:比如在 WSL 里装了 Git,但 Composer 在 Windows CMD 下运行;或者 CI 使用 root 用户执行,而 PATH 只对普通用户生效。验证永远要从「新开终端 + 当前用户 + 纯净环境」开始,别信配置文件里写了就等于生效。

















