根本原因是Composer路径未加入系统PATH,需手动添加C:\ProgramData\ComposerSetup\bin或%APPDATA%\Composer\vendor\bin,并验证PowerShell执行策略是否为Restricted,必要时执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser。

composer 命令提示“不是内部或外部命令”怎么办
根本原因就一个:composer 的可执行文件路径没进系统 PATH。Windows 不像 Linux/macOS 会自动识别用户级 bin 目录,它只认你手动加进去的路径。
官方安装器(Composer-Setup.exe)勾选了“Add to PATH”也不一定真生效——UAC 权限、多账户、PowerShell 执行策略都可能拦截写入。别信安装时的勾选框,一定要自己验证。
- 打开 CMD,运行
echo %PATH%,搜索有没有ComposerSetup\bin或Composer\vendor\bin - 如果没有,说明 PATH 没加成功;如果有但
composer --version还报错,大概率是 PowerShell 被策略拦了(见下一条) - 临时测试:直接进
C:\ProgramData\ComposerSetup\bin(注意ProgramData是隐藏文件夹),双击运行composer.bat—— 如果能弹窗显示版本,就确认是 PATH 或 shell 策略问题,不是安装失败
PowerShell 中 composer 找不到命令的隐藏原因
即使 PATH 正确,PowerShell 默认策略(Restricted)会禁止执行本地 .bat 和 .ps1 文件,而 Composer 安装器生成的正是 composer.bat。CMD 能跑,PowerShell 就静默失败——这是 Win10/11 最常被忽略的坑。
- 在 PowerShell 里运行
Get-ExecutionPolicy,如果返回Restricted,必须放宽策略 - 执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(无需管理员权限) - 改完后**关掉当前 PowerShell 窗口,新开一个**再试
composer --version - 不建议用
Unrestricted,RemoteSigned已足够安全且兼容 Composer
手动添加 PATH 的两个可靠路径(别抄错)
Composer 在 Windows 上有两个常见可执行路径,取决于你用什么方式安装。别凭印象乱填,填错路径等于白配。
- 用官方
Composer-Setup.exe安装的 → 添加C:\ProgramData\ComposerSetup\bin - 用
curl或php -r下载composer.phar后手动配置的 → 添加%APPDATA%\Composer\vendor\bin(注意:这里要展开成真实路径,比如C:\Users\YourName\AppData\Roaming\Composer\vendor\bin,否则环境变量不识别) - 添加方式:「此电脑」→「属性」→「高级系统设置」→「环境变量」→ 在「用户变量」的
Path里点「新建」→ 粘贴完整路径 → 全部点「确定」 - 改完必须新开终端,
source类命令在 Windows 里不存在,重启 CMD/PowerShell 是唯一生效方式
杀毒软件和 UAC 可能让你白忙活半小时
McAfee、Bitdefender、腾讯电脑管家等工具会默认拦截 composer.bat 的创建或执行,尤其在全局安装包(如 laravel/installer)时,表现是命令无响应、无报错、无输出——你以为配错了,其实是被静默拦截了。
- 先关掉实时防护,再重试
composer global require laravel/installer - 或者去杀软设置里把
composer.bat和%APPDATA%\Composer加入信任目录 - UAC 提权不足也会导致 PATH 写入失败:务必用普通用户身份操作「环境变量」设置,不要用管理员 CMD 去改用户变量(那只会改系统变量,对当前用户无效)
PATH 配置本身很简单,真正卡住人的永远是那些看不见的拦截层:PowerShell 策略、杀软规则、UAC 权限、隐藏文件夹路径。验证每一步是否真的生效,比一口气配完更重要。










