composer在windows上装不上90%是因php.exe未加入path,需先确保php --version可执行、openssl/curl/mbstring扩展启用,再手动配置composer.bat或用composer-setup.exe并指定php路径,最后配置阿里云镜像源https://mirrors.aliyun.com/composer/。

Composer 在 Windows 上装不上,90% 不是 Composer 的问题,而是 php.exe 没被系统认出来——你敲 php --version 没反应,后面所有操作都白搭。
php -v 报“不是内部或外部命令”怎么办
这是最前置、也最容易被跳过的卡点。Composer 本质是个 PHP 脚本,必须靠本地 php.exe 驱动,它不自己带解释器。
- 先确认你确实装了 PHP:去 XAMPP/WAMP/PHP 官网下载包里找
php.exe,常见路径如C:\xampp\php、C:\php或C:\phpstudy_pro\Extensions\php\php7.4.33 - 把完整目录(不含
php.exe文件名)加进系统Path:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,在“系统变量”里双击Path,新增一行,粘贴上面那个目录 - 关掉所有已打开的 CMD/PowerShell 窗口,新开一个,再运行
php --version—— 必须看到类似PHP 8.2.12才算过关 - 顺手检查
php.ini(用php --ini查位置)里这几行是否启用:extension=openssl、extension=curl、extension=mbstring;缺一不可,否则composer install会卡在 “Resolving packages…” 或直接报 SSL 错误
该用 Composer-Setup.exe 还是手动放 composer.phar
官方安装器看似省事,但 Windows 下更容易出路径冲突或注册表残留;手动方式反而干净、可复现。
- 推荐做法:去 https://www.php.cn/link/594ca739e3609243a6b6a3dd8d871114 下载最新
composer.phar(不是 .exe),扔进固定目录,比如C:\bin\composer.phar - 在同目录新建
composer.bat,内容只有一行:@php "%~dp0composer.phar" %* - 把
C:\bin加进系统Path(同上一步),重启终端后就能直接敲composer --version - 如果坚持用
Composer-Setup.exe,务必勾选 “Add to PATH”,并在安装时**手动指定php.exe路径**——别信它的自动探测,尤其当你机器上有多个 PHP 版本时
composer install 卡在 “Loading composer repositories” 怎么破
这不是网络差,是默认源 packagist.org 在国内 DNS 解析 + TLS 握手极不稳定,Windows 上表现更明显。
- 执行这条命令换全局镜像(阿里云目前最稳):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 如果项目根目录下已有
composer.json,且里面含repositories字段,那它会**覆盖全局配置**,得手动删掉或改成阿里云地址 - 换源后首次运行仍可能慢(要拉元数据缓存),但后续就快了;别用已停服的
https://packagist.phpcomposer.com,它自 2022 年起就失效了 - 备选镜像(按稳定性排序):
https://mirrors.ustc.edu.cn/composer/、https://mirrors.cloud.tencent.com/composer/
验证安装和镜像是否真生效
很多人以为敲出 composer --version 就万事大吉,其实只是证明命令通了,不代表能正常拉包。
- 建个空文件夹,运行
composer init,一路回车生成composer.json - 再跑
composer require monolog/monolog—— 如果 10 秒内开始下载,说明镜像和 PHP 环境全通;如果卡在 “Loading repository” 超过 30 秒,回头检查repo.packagist配置是否被项目级配置覆盖 - 注意:某些老旧 PHP 版本(如
7.2.5以下)会直接报Your PHP version is too old,Composer 2.x 已不兼容
真正麻烦的从来不是“怎么装”,而是装完发现 composer 命令能跑、php -v 有输出、但 require 就卡住——这时候八成是镜像没生效,或者项目里 composer.json 的 repositories 写死了旧地址,得一层层查。











