Composer全局bin目录默认为~/.composer/vendor/bin(Linux/macOS)或%APPDATA%\Composer\vendor\bin(Windows),需手动将其加入系统PATH环境变量并重启终端才能使用全局命令。

composer global bin 目录在哪?
执行 composer global config bin-dir 就能查到当前全局 bin 路径,通常为:
~/.composer/vendor/bin(Linux/macOS)或
%APPDATA%\Composer\vendor\bin(Windows)。这个路径是
composer global require 安装的命令行工具(比如 laravel/installer、phpunit/phpunit)实际生成可执行文件的位置。
为什么终端找不到全局安装的命令?
因为系统 PATH 没包含该 bin 目录。即使 composer global require laravel/installer 成功,运行 laravel 仍会报 command not found。关键不是 Composer 配置问题,而是 shell 启动时没把该路径加进 $PATH。
- Linux/macOS:在
~/.bashrc、~/.zshrc或~/.profile末尾追加:export PATH="$HOME/.composer/vendor/bin:$PATH"
- Windows(CMD/PowerShell):需通过「系统属性 → 高级 → 环境变量」手动把
%APPDATA%\Composer\vendor\bin加入用户 PATH - 改完后必须新开终端,或运行
source ~/.zshrc(macOS/Linux)才生效
如何验证 PATH 是否生效?
别只测 which laravel,先确认路径本身存在且有执行权限:
- 运行
ls -l $(composer global config bin-dir)(Linux/macOS)看是否有可执行文件 - 运行
echo $PATH | tr ':' '\n' | grep composer确认该路径已出现在 PATH 中 - 如果
which xxx无输出但$(composer global config bin-dir)/xxx --version能运行,说明 PATH 没加对 - Windows 上用
echo %PATH%检查,注意路径中不能有空格或中文(否则可能被截断)
遇到权限或符号链接问题怎么办?
某些系统(尤其是 macOS Catalina+ 或 WSL2)会因权限限制导致 composer global require 生成的二进制文件无法执行,或软链接损坏:
- 检查文件是否为真实可执行文件:
file $(composer global config bin-dir)/laravel,若显示cannot open或broken symlink,说明链接失效 - 临时修复:删掉对应文件,再运行一次
composer global update,让 Composer 重建链接 - 长期避免:不要手动修改
~/.composer/vendor/bin下的文件;升级 Composer 到 2.5+ 后,bin-dir默认使用绝对路径,减少软链接依赖
最常被忽略的一点:PHP CLI 版本和 Composer 使用的 PHP 版本必须一致,否则全局工具启动时可能因扩展缺失(如 mbstring)直接崩溃——用 which php 和 composer --version 输出里的 PHP 路径交叉核对。










