根本原因是Windows未让Composer找到php.exe,需配置PHP_BINARY或PATH;Composer按PHP_BINARY、PATH顺序查找php.exe,缺失或路径错误即报PHP未找到。

Composer 报错 “Could not open input file: composer.phar” 或 “The PHP engine is not found” 的根本原因,不是 Composer 没装好,而是 Windows 系统压根没让 Composer 找到 php.exe —— 它需要明确的 PHP_BINARY 或系统级 PATH 支持。
为什么 Composer 在 Windows 上总提示找不到 PHP
Composer 是 PHP 脚本(composer.phar),但它本身不自带 PHP 解释器。Windows 下运行时,它会按顺序查找 PHP:先查环境变量 PHP_BINARY,再查系统 PATH 中第一个能执行的 php.exe。如果两者都缺失或指向错误路径(比如 XAMPP 里的 php.exe 被删了、WAMP 切换版本后路径变了、或者用的是 VS Code 内置 PHP 但没加进 PATH),就会报“PHP not found”。
常见错误现象包括:
-
Could not open input file: composer.phar(实际是 PHP 启动失败的伪装报错) The PHP engine is not found. Please install PHP 7.2.5 or higher- 执行
composer --version卡住几秒后直接退出,无输出
检查当前 PHP 是否真正可用
别信“我装过 PHP 就一定行”。打开新命令提示符(CMD 或 PowerShell),逐条运行:
立即学习“PHP免费学习笔记(深入)”;
where php
如果返回空,说明 php.exe 不在 PATH 中;如果返回多个路径,注意看哪个是你要用的(比如 C:\xampp\php\php.exe 或 C:\php\php.exe)。
再验证它能否正常工作:
php -v
必须输出类似 PHP 8.2.12 (cli)...。若报“不是内部或外部命令”,说明该 php.exe 所在目录确实没进 PATH;若报“由于找不到 VCRUNTIME140.dll”等,是 VC 运行库缺失,和 Composer 无关,先装 Microsoft Visual C++ Redistributable。
设置 PHP 环境变量的两种可靠方式
推荐优先用 PHP_BINARY(精准、不污染全局);若需全局调用 PHP 命令,再配 PATH:
- 临时设置(仅当前 CMD 窗口有效):
set PHP_BINARY=C:\xampp\php\php.exe
- 永久设置
PHP_BINARY(推荐):
右键“此电脑”→“属性”→“高级系统设置”→“环境变量”→在“系统变量”里点“新建”:
变量名填PHP_BINARY,变量值填完整路径,例如C:\xampp\php\php.exe(注意:不能带引号,不能是文件夹路径) - 永久设置
PATH(备选):
在“系统变量”中找到Path→ 编辑 → 新建一行,填入 PHP 目录(不是php.exe路径!),例如C:\xampp\php。保存后重启所有 CMD/PowerShell 窗口。
验证是否生效:新开一个 CMD,运行 echo %PHP_BINARY% 应显示你设的路径;再运行 composer --version,应正常输出版本号。
多 PHP 版本共存时的注意事项
如果你同时装了 XAMPP、WAMP、phpstudy 或手动解压多个 PHP,PATH 里多个 PHP 目录会导致 where php 返回多个结果,而 Composer 只取第一个 —— 很可能不是你想要的那个。
此时不要依赖 PATH,强制用 PHP_BINARY 指定:
- 开发 Laravel 项目?在项目根目录下运行:
set PHP_BINARY=C:\php\8.1\php.exe && composer install
- 长期固定用某版本?把
PHP_BINARY设为那个路径,比改PATH更安全。 - 用 Git Bash?它不读 Windows 系统环境变量,需在
~/.bashrc里加:export PHP_BINARY="/c/php/8.1/php.exe"
(路径用正斜杠 + 驱动器前缀)
最易被忽略的一点:修改环境变量后,所有已打开的终端(CMD、PowerShell、VS Code 终端、Git Bash)都必须**完全关闭再重开**,否则看不到变化。VS Code 尤其容易卡在旧环境里,关掉整个窗口再开才保险。











