Composer diagnose报“Git not found”但git --version成功,说明Git已安装但PATH未被Composer继承,常见于Web服务、CI或IDE等非交互式环境未加载shell配置,需在纯净终端验证路径并确保对应用户环境变量正确配置。

composer diagnose 显示 Git not found 但终端能跑 git --version
这不是 Git 没装,而是 Composer 运行时根本没继承你终端里的 PATH。典型场景:你在 zsh 里配了 export PATH="/opt/homebrew/bin:$PATH",但 composer diagnose 是由 Web 服务(www-data)、CI runner 或 IDE 内置终端触发的——这些环境默认不加载 ~/.zshrc。
验证方式:新开一个**完全干净的终端窗口**(别复用已有标签页),依次执行:
-
git --version—— 看是否输出版本号 -
which git(macOS/Linux)或where git(Windows)—— 记下路径,比如/opt/homebrew/bin/git -
composer diagnose—— 如果前两步成功、第三步仍报 WARNING,说明环境隔离
临时验证:直接传完整路径,例如 GIT_EXECUTABLE=/opt/homebrew/bin/git composer diagnose。若此时 OK,就坐实是 PATH 未继承问题。
Windows 上 'git' 不是内部或外部命令
99% 是 Git for Windows 安装时漏选了 “Add Git to the system PATH”。它默认勾选的是 “Only use Git from Git Bash”,这个选项只让 git.exe 在 Git Bash 里可用,CMD、PowerShell、PHP 子进程全看不到。
正确做法:
- 重装 Git for Windows,最后一步务必选 “Use Git from Windows Command Prompt”(对应文字是 Add Git to the system PATH)
- 确认
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,有输出才算真正生效。
Linux/macOS 下 which git 无输出或路径不对
Homebrew 在 Apple Silicon 上默认装到 /opt/homebrew/bin/git,而旧脚本常只认 /usr/local/bin;Ubuntu/Debian 用户如果只装了 git-core,实际缺的是含 git 命令的元包。
检查与修复:
- 运行
which git,若为空,先试xcode-select --install(macOS)或sudo apt install git(Ubuntu/Debian) - 若输出是
/opt/homebrew/bin/git,编辑~/.zshrc,追加:export PATH="/opt/homebrew/bin:$PATH" - 重载配置:
source ~/.zshrc,再开新终端测试 - 容器环境(如 Alpine)默认没 Git,得手动
apk add --no-cache git;Debian/Ubuntu 镜像也需apt-get install -y git
composer install 卡在 sh: git: not found,怎么绕过?
绕过不是删掉问题,而是告诉 Composer:“别碰 git,全给我走 zip”。但前提是包真有 dist 归档,否则它会静默 fallback 回 source,然后再次失败——日志里可能只写 Failed to download vendor/package,根本不提 git。
可行手段:
- 临时验证:
composer install --prefer-dist - 项目级锁定:
composer config prefer-dist true(写入composer.json的"config"段) - 全局禁用 source:
composer config --global preferred-install "dist" - CI 场景务必加
--no-plugins --no-scripts,防止插件偷偷调用 git
验证是否生效:composer install -vvv,看到 Downloading https://.../package.zip 才算成功;若仍有 Executing command (CWD): git clone,说明某处还在 force source。
最易被忽略的一点:Web 服务或容器里运行 Composer 的用户(如 www-data)有自己的 PATH,和你当前用户完全隔离——别只在自己 shell 里修好了就以为万事大吉。


















