Git已安装但composer diagnose报“Git not found”,说明环境隔离导致PATH未继承,常见于shell配置限制、IDE/CI/Web服务用户上下文不同或Windows安装时未勾选“Add Git to PATH”;需在纯净终端验证git --version与which git,并确保对应用户环境变量正确配置。

git --version 有输出但 composer diagnose 报 “Git not found”
这说明 Git 确实装好了,但 Composer 启动时没继承到你的 PATH。常见于 shell 配置文件(如 ~/.zshrc)里只对交互式 shell 生效的写法,比如带 [[ -n $PS1 ]] 判断的 export PATH=...;也可能是你在 IDE 内置终端或 Web 服务(如 www-data 用户)里运行 Composer,而该用户环境根本没加载你的配置。
验证方式:新开一个纯净终端(不复用已有会话),依次执行:
git --version-
which git(macOS/Linux)或where git(Windows) composer diagnose
若前两步成功、第三步仍失败,就说明环境隔离了。临时解决可直接传路径:GIT_EXECUTABLE=/usr/local/bin/git composer diagnose;长期解法是把 export PATH="...:$PATH" 写进对应用户的 shell 配置,并确保无条件执行。
Windows 上 git 命令存在但 Composer 找不到
99% 是安装时漏选了 “Add Git to the system PATH”。Git for Windows 提供三个选项,“Only use Git from Git Bash” 是默认值,但它只让 Git 在 Git Bash 里可用,CMD/PowerShell/PHP 子进程都看不到。
正确做法:
- 重装 Git for Windows,最后一步务必勾选 Add Git to the system PATH(对应选项文字是 “Use Git from Windows Command Prompt”)
- 确认
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 Homebrew 安装后 composer 仍提示 Git 版本过低或未找到
Homebrew 在 Apple Silicon(M1/M2/M3)上默认装到 /opt/homebrew/bin/git,而旧脚本或 PHP 进程常只查 /usr/local/bin。Xcode 自带的 git(来自 Command Line Tools)版本老旧且缺子命令(如 git config),Composer 会拒绝使用它。
操作要点:
- 别用
xcode-select --install替代完整 Git 安装 - 运行
brew install git(不是git-core) - 检查
which git输出,如果是/opt/homebrew/bin/git,就在~/.zshrc末尾加:export PATH="/opt/homebrew/bin:$PATH" - 运行
source ~/.zshrc,再开新终端测试git --version和composer diagnose
注意:Composer 要求 Git ≥2.19.2,brew install git 装的是最新版,能同时解决“未找到”和“版本太低”两类报错。
Docker 容器内运行 composer install 报 git not found
基础镜像(如 php:8.3-cli)默认不含 Git,而 Composer 在拉取 dev- 分支或私有 VCS 包时必须调用它。不能靠宿主机 Git,容器是隔离环境。
修复方式是在 Dockerfile 中显式安装:
- Debian/Ubuntu 基础镜像:
RUN apt-get update && apt-get install -y git zip unzip - Alpine 镜像:
RUN apk add --no-cache git zip unzip
别只装 git —— zip 和 unzip 是 Composer 下载 dist 包必需的,缺了也会报错。装完建议加一句 RUN git --version 做构建时验证。CI 场景下如果不想装 Git,可用 --prefer-dist,但得确认所有依赖都有可用的 dist 归档,否则 fallback 仍会触发 Git。
最容易被忽略的是:Git 路径对、版本够、命令能跑,但 Composer 运行用户(如容器里的 www-data 或 CI 中的非 root 用户)的 $PATH 里没有它。这时候光装 Git 没用,得确保对应用户的环境变量也包含那个路径。


















