laravel等全局命令找不到,因composer全局bin路径未加入path;windows需将%appdata%\composer\vendor\bin加至用户变量path,linux/macos需在shell配置中添加$home/.composer/vendor/bin并source生效。

全局安装的命令(如 laravel、phpunit)找不到,不是 Composer 没装上,而是环境变量没配对位置——它和 composer 命令本身是两套路径体系。
为什么 composer global require 成功了但命令还是报错
Composer 全局安装的可执行文件默认放在 %APPDATA%\Composer\vendor\bin(Windows)或 ~/.composer/vendor/bin(macOS/Linux),绝不会自动加进 PATH。你运行 composer global require laravel/installer 只是把二进制文件复制/链接到那个目录,不等于系统能“看见”它。
- 验证方式:运行
composer config --global bin-dir --absolute,输出的就是你该加进 PATH 的真实路径 - Windows 用户注意:这个路径必须加进「用户变量」→
Path,不是「系统变量」;加错层级会导致切换账户或管理员运行时失效 - Linux/macOS 用户注意:不能只写
export PATH=~/.composer/vendor/bin:$PATH,~在某些 shell 下不展开,要用$HOME或绝对路径 - Git Bash 用户额外注意:它不读 Windows 用户变量,需单独在
~/.bashrc里加export PATH="$APPDATA/Composer/vendor/bin:$PATH"
where composer 有输出但 laravel 没反应?检查 PATH 重复和顺序
PATH 过长或重复添加同一个目录,是 Windows 上最隐蔽的故障源。一旦总长度超过 32767 字符,系统 spawn 子进程就会失败,表现为命令无响应、卡住、或报 CreateProcess failed。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查当前长度:在 PowerShell 中运行
echo $env:PATH.Length - 定位重复项:运行
composer config --global bin-dir,再打开「环境变量」设置,搜索该路径是否被多次添加(常见于 IDE 插件、旧版 Laravel Installer 自动写入) - 清理原则:只保留一条
%APPDATA%\Composer\vendor\bin,且放到 PATH 列表最前面(避免被其他同名.bat覆盖) - 更稳做法:不用 PATH,直接调用完整路径,比如
"%APPDATA%\Composer\vendor\bin\laravel.bat" --version
重装 Composer 后 laravel 命令突然消失?别只改 PATH
Composer 安装程序(Composer-Setup.exe)不仅写 PATH,还往注册表写 PHP 路径绑定、注册服务。手动删 PATH 再重装,若没清注册表,composer.bat 仍可能调用旧 PHP,导致全局 bin 目录下的脚本无法正确加载依赖。
- 重装前必须删干净:
C:\ProgramData\ComposerSetup、%USERPROFILE%\AppData\Roaming\Composer、注册表中HKEY_LOCAL_MACHINE\SOFTWARE\PHP\Composer和HKEY_CURRENT_USER\Software\Composer - 安装时两个选项不能跳过:勾选 Install for all users;PHP 路径检测失败时,手动填
php.exe的完整绝对路径(不能带空格,不能是相对路径) - 重装后立即验证:
composer diagnose -v看Global Config和PHP binary是否都标 OK,再试laravel --version
真正容易被忽略的是:全局命令的路径和 composer 命令的路径完全独立,且各自受不同环境变量控制;PATH 里多一个空格、少一个分号、或者注册表残留,都可能导致其中某一个失效,而另一个看起来完全正常。










