答案是path未配置或未重载;需运行composer global config bin-dir --absolute获取真实路径,将其添加到shell配置文件并source重载,再验证echo $path和which命令是否生效。

为什么 composer global require 装完命令还是 command not found
不是安装失败,是 shell 根本没去你放命令的地方找。Composer 全局安装工具(比如 laravel、phpunit)时,它只把可执行脚本软链接到 ~/.composer/vendor/bin/(或你自定义的 bin-dir),这个路径默认不在系统 $PATH 里。
常见现象:
-
composer global require laravel/installer执行成功,但敲laravel报错 -
which laravel没输出,ls ~/.composer/vendor/bin/却能看到laravel文件 -
echo $PATH输出里没有~/.composer/vendor/bin
根本原因:PATH 没配对,或者配了但没重载。
怎么确认真实全局 bin 目录在哪
别猜路径,尤其改过 COMPOSER_HOME 或用过非默认配置。Composer 自己知道它把命令放哪儿:
运行:composer global config bin-dir --absolute
它会直接输出类似:/home/alex/.composer/vendor/bin
如果设过 export COMPOSER_HOME="/opt/composer",那结果就是:/opt/composer/vendor/bin
这个路径才是你必须加进 $PATH 的那个。
Linux 下 PATH 配置实操要点
确认好 bin 目录后,把它加进当前用户的 $PATH:
- 查你用什么 shell:
echo $SHELL(通常是/bin/zsh或/bin/bash) - zsh 用户:往
~/.zshrc末尾加一行:export PATH="$HOME/.composer/vendor/bin:$PATH" - bash 用户:往
~/.bashrc或~/.bash_profile加同样内容 - 加完立刻生效:
source ~/.zshrc(或对应文件) - 验证是否生效:
echo $PATH | grep composer应该能看见路径
注意:$HOME 不能写成 ~,某些 shell 不展开;export 行必须在配置文件末尾,避免被后续覆盖。
装完还找不到命令?再检查三件事
PATH 配好了,命令仍不可用,优先排查:
-
ls -l ~/.composer/vendor/bin/ | grep laravel—— 看软链接是否存在且指向有效目标(损坏链接会导致静默失败) -
composer diagnose—— 它会报出 home 目录不可写、CA 证书缺失等底层问题,这些会让global require表面成功实则失效 -
php -v和composer --version版本是否兼容(例如 Composer 2.x 要求 PHP ≥7.2;PHP 8.3+ 可能需 Composer 2.5+)
国内用户务必配镜像源,否则 composer global require 极易卡在 Resolving dependencies 阶段——这不是超时,是 DNS 解析失败导致连接中断。











