Composer报“git was not found in your PATH”是因拉取dev分支、vcs仓库或启用--prefer-source时需调用系统git命令,而当前执行环境(如Web服务、CI、Docker)未加载PATH或用户上下文不同导致。

Composer 报 git was not found in your PATH,不是 Composer 有问题,而是它在拉取 dev- 分支、vcs 类型仓库或启用 --prefer-source 时,必须调用系统级 git 命令——如果命令不可达,就直接失败。
git --version 成功但 composer diagnose 仍报错
这是典型的环境错位:你在交互式终端里配好了 PATH,但 composer 实际运行在另一个上下文(比如 Web 服务用户、CI runner、Docker 容器、IDE 内置终端),压根没加载你的 ~/.zshrc 或 ~/.bash_profile。
- 新开一个纯净终端(不复用已有会话),执行
git --version和which git,确认输出有效 - 接着运行
composer diagnose,看是否仍有Git not found警告 - 若仍失败,检查 shell 配置文件中是否有条件判断(如
[[ -n $PS1 ]] && export PATH=...),导致非交互式 shell 跳过 PATH 设置 - 临时验证:用完整路径调用,例如
GIT_EXECUTABLE=/opt/homebrew/bin/git composer diagnose
Windows 上 “git 不是内部或外部命令”
几乎 100% 是安装时漏选了添加到系统 PATH。Git for Windows 默认提供三个 PATH 选项,只有勾选 “Add Git to the system PATH” 才能让所有进程(包括 PHP 子进程)访问 git.exe。
- 检查路径是否存在:
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,有输出才算真正生效
macOS Apple Silicon 或 Linux 的 PATH 不匹配
Homebrew 在 M1/M2/M3 上默认装在 /opt/homebrew/bin,而旧脚本常只认 /usr/local/bin;Ubuntu/Debian 用户若只装了 git-core,实际缺的是含 git 命令的元包。
- 运行
which git,看输出是不是/opt/homebrew/bin/git(Apple Silicon)或/usr/bin/git(Linux) - 如果是前者,编辑
~/.zshrc(macOS Catalina 及以后默认用 zsh),追加:export PATH="/opt/homebrew/bin:$PATH" - 重载配置:
source ~/.zshrc,再开新终端测试 - Ubuntu/Debian 用户别只装
git-core:sudo apt install git(这才是含git命令的完整包)
Web 服务或容器里 git 找不到
最易被忽略的是权限和用户上下文:Web 服务器(如 www-data)或容器非 root 用户,其 PATH 往往和你登录用户不同,git 命令存在但不可见。
- 不要只在自己账户下验证
git --version,要切换到目标用户测:sudo -u www-data git --version - Docker 构建时需显式安装:
RUN apt-get update && apt-get install -y git(Debian/Ubuntu)或RUN apk add --no-cache git(Alpine) - CI 环境(如 GitHub Actions)需在
steps中先装 Git:uses: actions/setup-git@v4或手动apt install git - PHP-FPM 或 Apache 模块启动的 Composer,PATH 通常极简,建议直接在
php.ini或启动脚本里补全PATH
PATH 配置本身不难,难的是确认哪个用户、哪个 shell、哪个进程真正调用了 Composer —— 每一层都可能隔离环境变量,漏掉任意一环,git 就还是“找不到”。


















