答案是PATH未配置导致命令找不到;composer global require仅将包解压并软链接可执行文件到~/.composer/vendor/bin(Linux/macOS)或%APPDATA%\Composer\vendor\bin(Windows),该路径必须手动加入系统PATH,否则shell无法定位命令。

装完就报 command not found?不是命令错了,是 PATH 没生效,90% 的问题卡在这一步。
composer global require 本质是装包,不是“装命令”
执行 composer global require laravel/installer,Composer 只做两件事:把包解压到 ~/.composer/vendor/(Linux/macOS)或 %APPDATA%\Composer\vendor\(Windows),再把它的可执行文件(比如 laravel)软链接进 vendor/bin/ 目录。它不会自动让 shell 找得到这个文件。
也就是说:laravel 这个命令实际存在,但系统根本不知道它在哪——除非你手动把 vendor/bin 路径加进 PATH。
- 别用
sudo composer global require:会导致~/.composer归属变成 root,后续所有全局操作都会因权限失败 -
--dev参数会被忽略:全局安装不区分 require / require-dev,加了也白加 - 包名必须准确:比如 Deployer 是
deployer/deployer,不是deployer_composer或deployer
怎么确认 vendor/bin 路径并加进 PATH
别靠记忆或文档硬背路径,尤其当你改过 COMPOSER_HOME。直接问 Composer:
立即学习“PHP免费学习笔记(深入)”;
运行 composer global config bin-dir --absolute,它会输出类似 /home/alex/.composer/vendor/bin 或 C:\Users\Alex\AppData\Roaming\Composer\vendor\bin 的真实路径。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
然后按系统操作:
- Linux/macOS:在
~/.zshrc(zsh 用户)或~/.bash_profile(bash 用户)末尾加一行export PATH="$HOME/.composer/vendor/bin:$PATH",再运行source ~/.zshrc - Windows:在「系统属性 → 高级 → 环境变量」中,用户变量
Path新增该路径,然后关掉所有终端重开 - 验证是否成功:运行
echo $PATH | grep composer(Linux/macOS)或echo %PATH%(Windows),确认路径已出现;再试which laravel或where dep
常见工具安装命令和注意点
这些命令本身没问题,但成败取决于 PATH 是否就位:
- Laravel 安装器:
composer global require laravel/installer→ 命令是laravel - Deployer:
composer global require deployer/deployer→ 命令是dep,但需确保 PHP 启用了phar和openssl扩展(php -m | grep -E "(phar|openssl)") - PHP CS Fixer:
composer global require friendsofphp/php-cs-fixer→ 命令是php-cs-fixer,注意中间有短横线 - PHPUnit:
composer global require phpunit/phpunit→ 命令是phpunit,但要注意:它和项目本地的./vendor/bin/phpunit是两套环境,版本、配置、PHP 版本都可能不同
装完别急着用,先跑 composer global list 看是否列出来,再查 ls -l ~/.composer/vendor/bin/ | grep xxx(Linux/macOS)确认软链接是否存在。
PATH 生效了,但命令还是打不开?检查这几个点
PATH 正确 ≠ 命令一定能跑。以下情况容易被忽略:
- macOS Catalina+ 或某些 Linux 发行版上,
dep或php-cs-fixer脚本可能没执行权限:手动加chmod +x ~/.composer/vendor/bin/dep - PHP 多版本共存时,
composer和dep可能调用不同 PHP:运行which php和composer --version对比 PHP 路径 - 某些包的二进制名和包名不一致(比如
phpunit/phpunit生成的是phpunit,但phpstan/phpstan生成的是phpstan),不能凭包名猜命令名 -
composer global exec是临时补救方案(如composer global exec phpunit --version),但它绕不过 autoload 冲突、扩展缺失等底层问题
最省事的排查顺序:先确认 bin-dir 路径 → 检查 PATH 是否包含它 → 查看对应命令文件是否存在且可执行 → 最后才怀疑包本身或 PHP 环境。


















