git bash 中 composer 命令找不到是因为其路径未加入 path,需将 c:/programdata/composersetup/bin 添加到 ~/.bashrc 的 path 中并重载;同时 composer 全局配置默认位于 windows 的 %appdata%/composer 而非 ~/.composer。

Git Bash 里 composer 命令找不到?先确认它根本没进 PATH
不是 Git Bash 不支持 composer,而是它压根没看到这个命令——Windows 上 Composer 默认装在 C:\ProgramData\ComposerSetup\bin 或你自定义的路径,而 Git Bash 的 $PATH 默认不包含这些位置。
实操建议:
- 打开 Git Bash,运行
which composer,如果没输出,说明确实不在 PATH 里 - 运行
cmd /c where composer查 Windows 下的安装位置(常见是C:\ProgramData\ComposerSetup\bin\composer.bat) - 把对应目录加到
~/.bashrc末尾:export PATH="$PATH:/c/ProgramData/ComposerSetup/bin"
(注意路径用/c/ 开头,不是 <code>C:\) - 执行
source ~/.bashrc生效,再试composer --version
为什么不用 php composer.phar 直接跑?效率和习惯问题
能跑,但每次敲 php composer.phar install 太冗长,还容易漏掉当前目录的 composer.phar 路径。更关键的是:全局 composer 命令会自动识别项目里的 composer.json 和本地插件,而直接调 php composer.phar 可能绕过某些环境适配逻辑。
常见错误现象:
- 用
php composer.phar update时提示Class 'Composer\Autoload\ClassLoader' not found—— 因为 phar 文件权限或 PHP 加载限制导致 autoload 失败 - 某些插件(如
hirak/prestissimo)只在全局composer下生效,php composer.phar不加载它们
composer 在 Git Bash 启动慢?大概率是 Windows 防病毒软件拦截
Git Bash 启动 composer 时卡在“正在加载…”几秒甚至十几秒,不是 Bash 本身问题,而是防病毒软件(尤其是 Windows Defender 实时防护)反复扫描 composer.bat 和临时生成的 PHP 进程。
解决方法很直接:
- 把
C:\ProgramData\ComposerSetup整个目录加进 Windows Defender 排除项 - 或者临时关闭实时防护测试是否改善(别忘了开回来)
- 避免把项目放在 OneDrive 或 Dropbox 同步目录下——Composer 写锁文件时会被同步服务干扰
Windows + Git Bash + Composer 组合下最常被忽略的一点
Git Bash 的 ~ 是 /c/Users/xxx,但 Composer 的全局配置缓存默认还在 Windows 的 %APPDATA%\Composer(即 C:\Users\xxx\AppData\Roaming\Composer)。这意味着你在 Git Bash 里改了 ~/.composer/config.json,实际可能完全没生效——Composer 根本不读那里。
验证方式:
- 运行
composer config --list --global,看home字段指向哪 - 如果显示
C:\Users\xxx\AppData\Roaming\Composer,就别碰~/.composer,直接去那个 Windows 路径下改config.json - 想统一路径?可以强制设置:
composer config --global home "/c/Users/xxx/AppData/Roaming/Composer"(注意斜杠方向)
这事不难,但查日志、翻文档时容易默认往 Unix 思维里套,结果改了半天配置,composer create-project 还是从默认源拉包。










