composer global config bin-dir --absolute 直接显示全局命令真实路径,Linux/macOS为/home/用户名/.composer/vendor/bin或/Users/用户名/.composer/vendor/bin,Windows为C:\Users\用户名\AppData\Roaming\Composer\vendor\bin。

composer global config bin-dir —— 直接拿到全局命令所在目录
你装了 laravel/installer 或 phpunit/phpunit,却敲 laravel 报 command not found?八成是没把它的可执行文件位置加进 PATH。而这个位置,composer global config bin-dir 一句话就能告诉你。
-
composer global config bin-dir输出的是相对路径(比如vendor/bin),不够直观;加--absolute才能立刻看到真实路径:composer global config bin-dir --absolute - Linux/macOS 通常返回
/home/用户名/.composer/vendor/bin或/Users/用户名/.composer/vendor/bin;Windows 是C:\Users\用户名\AppData\Roaming\Composer\vendor\bin - 这个路径里放的不是源码,而是 shell 脚本或符号链接(如
laravel文件),它最终指向~/.composer/vendor/laravel/installer/bin/laravel这类真实入口
composer config --global home —— 定位全局配置和 vendor 根目录
想看包代码到底下在哪了?先找“家”。composer config --global home 就是查 Composer 全局配置的根目录,所有全局包的源码都藏在它下面的 vendor/ 里。
- 执行
composer config --global home,输出类似/home/alex/.composer(Linux)或C:\Users\alex\AppData\Roaming\Composer(Windows) - 进去看:
ls -l ~/.composer/vendor/(macOS/Linux)或dir %APPDATA%\Composer\vendor(Windows),就能看到laravel/installer、phpunit/phpunit这些文件夹 - 注意:如果改过全局
home或vendor-dir,这个命令会如实反映,比硬记默认路径靠谱得多
which laravel / Get-Command laravel —— 反查已生效命令的真实路径
命令已经能用了,但你想确认它是不是真的从 Composer 全局 bin 来的?别猜,用系统命令直接“顺藤摸瓜”。
- macOS/Linux:
which laravel会返回/home/用户名/.composer/vendor/bin/laravel;再加readlink -f $(which laravel)就能看到它最终指向哪行 PHP 入口 - Windows PowerShell:
Get-Command laravel | Select-Object -ExpandProperty Definition同样给出完整路径 - 常见陷阱:如果你之前手动复制过
laravel到别处(比如/usr/local/bin),这里会优先显示那个旧路径,而非 Composer 管理的版本
为什么加了 PATH 还不生效?检查这三件事
明明把 ~/.composer/vendor/bin 加进 PATH 了,新终端一开还是找不到命令——问题往往不在 Composer,而在你的 shell 环境。
- 确认改的是当前 shell 的配置文件:
zsh用户改~/.zshrc,bash用户改~/.bashrc,别错配 - 加完记得重载:
source ~/.zshrc(别只改完就关终端) - Windows 用户注意:必须把
%APPDATA%\Composer\vendor\bin加到「系统环境变量」或「用户环境变量」里,加到 CMD 的临时set PATH=...里是无效的
最常被跳过的一步,是以为 Composer 会自动帮你把 bin-dir 加进 PATH——它不会。它只管装,不管路。路径对了、环境刷了、权限有了,命令才真正属于你。










