composer全局包实际安装路径由composer global config bin-dir –absolute命令确定,linux/macos默认为~/.composer/vendor/bin/,windows为%appdata%composervendorbin,但需确保该路径已加入系统$path。

Composer全局包安装在哪儿
Composer全局包默认装在 ~/.composer/vendor/bin/(Linux/macOS)或 %APPDATA%Composervendorbin(Windows),但这个路径是否生效,取决于你的 $PATH 是否包含它。
怎么确认当前生效的全局 bin 路径
别猜,直接让 Composer 告诉你:
composer global config bin-dir --absolute
这条命令输出的就是当前实际使用的全局可执行文件目录。注意加 --absolute,否则可能返回相对路径(比如 vendor/bin),没用。
- 如果报错
Could not open input file: composer,说明composer命令本身没进$PATH,先解决它 - 输出路径里没有
bin?那是旧版 Composer(vendor/bin - Windows 用户注意:PowerShell 和 CMD 对
%APPDATA%展开行为不同,建议用echo %APPDATA%先确认真实路径
为什么 laravel/installer 装了却找不到 laravel 命令
本质是路径没导进系统环境变量——Composer 只负责把二进制文件丢进 bin-dir,不负责帮你加到 $PATH。
- Linux/macOS:在
~/.bashrc或~/.zshrc末尾加export PATH="$HOME/.composer/vendor/bin:$PATH",然后source一下 - Windows(CMD):用系统属性 → 高级 → 环境变量,把
%APPDATA%Composervendorbin加进用户级PATH - 装完后必须新开终端,旧终端的
$PATH不会自动刷新 - 运行
which laravel(macOS/Linux)或where laravel(Windows)验证是否真能命中
全局包路径被改过怎么办
有人手动改过 composer global config bin-dir,或者用过 --global-config 指定配置位置,那路径就不是默认值了。
最稳的办法是查配置源:
composer global config -l | grep bin-dir
这会显示当前生效的 bin-dir 值,以及它来自哪个配置文件(比如 ~/.composer/config.json 或 ~/.config/composer/config.json)。
- 如果看到
global标记,说明是全局配置;system表示系统级配置,普通用户通常没权限改 - 修改配置后记得清缓存:
composer clear-cache,否则某些旧路径可能被缓存住 - 多个 Composer 版本共存时(比如 Homebrew 装一个、官方 installer 装一个),
composer --version和which composer必须对得上,否则global操作可能作用在错误的实例上
路径本身不难找,难的是它和 shell 环境、Composer 实例、用户权限三者咬合的那一小段缝隙——漏掉任意一环,command not found 就会准时出现。