git bash中composer命令报错的根本原因是其不识别windows的composer.bat,需创建shell脚本封装php composer.phar调用并将脚本目录加入path,同时设置composer_windows_bash=1以支持git操作。

Git Bash 里敲 composer 报 command not found,不是 Composer 没装好,而是 Git Bash 根本不认 Windows 的 composer.bat——解决它不用重装、不换 PHP,只靠两步:让 Git Bash 找到 composer.phar,再让它用 php 跑起来。
为什么 Git Bash 找不到 composer 命令
Windows 官方安装器生成的是 composer.bat,这是 CMD/PowerShell 专用的批处理文件。Git Bash 是 MinGW 环境,遇到 .bat 文件会跳过、忽略,甚至报 Permission denied。它只认可 shell 脚本或二进制,而 composer.phar 本质是 PHP 归档,只要系统 PATH 里有 php,就能直接运行。
常见错误现象:
- 在 Git Bash 中输入
composer --version,返回bash: composer: command not found - 用
which composer查不到路径,但 CMD 里能正常运行 - 手动执行
php composer.phar --version成功,说明 PHP 和.phar都没问题
怎么让 composer 在 Git Bash 里可用
最轻量、最稳定的做法:写一个 shell 脚本封装调用,复用已有的 php.exe 和 composer.phar。
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
- 确保
php在 Git Bash 中可用:运行php --version;若报错,在~/.bashrc中加 PHP 路径,例如:export PATH="/c/php:$PATH" - 创建脚本目录:
mkdir -p ~/bin - 进入目录并新建脚本:
cd ~/bin && touch composer && chmod +x composer - 编辑脚本内容(注意替换你的实际路径):
#!/usr/bin/env bash php /c/Users/YourName/AppData/Roaming/Composer/vendor/bin/composer.phar "$@"
其中/c/Users/YourName/必须是你本地composer.phar的绝对路径;可用 CMD 运行where composer.phar查到后,把C:\替成/c/,反斜杠换成正斜杠 - 将
~/bin加入 PATH:echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
为什么 composer require 还是报 'git' is not recognized
即使 composer 命令本身能用了,某些操作(比如 composer require vendor/package:dev-branch)仍可能失败,报错类似 'git' is not recognized as an internal or external command。这是因为 Composer 内部调用外部命令时,默认走 cmd.exe,而 cmd 不理解 /c/path 这类路径,也找不到你在 Git Bash 里配置的 git 别名或 SSH 设置。
- 设置环境变量:
export COMPOSER_WINDOWS_BASH=1(临时生效),或在系统环境变量中新建COMPOSER_WINDOWS_BASH,值为1 - 确保
bash.exe可被找到:Git for Windows 默认安装路径为C:\Program Files\Git\bin\bash.exe或C:\Program Files\Git\usr\bin\bash.exe,确认该路径已加入系统PATH(CMD 下运行where bash验证) - 重启 Git Bash 后测试:
composer require monolog/monolog:dev-main—— 若不再报git未识别,说明切换成功
镜像配置别踩 repo.packagist 这个坑
执行 composer config -g repo.packagist https://mirrors.aliyun.com/composer/ 很可能没生效,因为键名错了。
- Composer 2.2+ 已废弃
repo.packagist,正确写法是:composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}' - 全局配置默认存在
%APPDATA%\Composer\config.json,但项目根目录下的composer.json中若有"repositories"字段,会完全覆盖全局配置 - 验证是否写入成功:
composer config -g --list | grep -i mirror(Git Bash)或composer config -g --list | findstr mirror(CMD) - 国内推荐阿里云镜像:
https://mirrors.aliyun.com/composer/;腾讯云镜像偶尔有元数据延迟,华为云镜像不支持完整结构,慎用
最关键的细节往往藏在路径格式和环境变量作用域里:composer.phar 路径必须是 MSYS2 格式(/c/...),COMPOSER_WINDOWS_BASH=1 必须在 Git Bash 会话中生效,而镜像配置一旦被项目级 composer.json 覆盖,就完全失效——这些点不手动验证,很容易以为“配了等于白配”。










