win7上只能安装composer 2.2.x(如2.2.22),需搭配php 7.4或8.0,关闭或修正php.ini中openssl.cafile,确保curl扩展正确加载,并用批处理封装phar文件。

Win7 上装不了新版 Composer,不是你操作错了,是 PHP 和 OpenSSL 的兼容性断了——得用 2.2.x 版本,且必须配对 PHP 7.4 或 8.0(不推荐 8.1+)。
为什么 Win7 装 composer-setup.php 总报 cURL error 60
这是最典型的症状:下载脚本时卡在 SSL 验证,本质是 Win7 自带的 Windows Crypto API 不支持新版 CA 证书链,而 Composer 官方分发服务器(getcomposer.org)已停用旧 TLS 策略。
- PHP 7.4 自带的
openssl.cafile默认指向一个过期或路径错误的证书文件(比如C:\php\extras\ssl\cacert.pem不存在) - Win7 SP1 缺少 KB2992611 补丁时,
cURL根本无法握手 TLS 1.2,而 Composer 2.3+ 强制要求 TLS 1.2+ - 别试
curl -k绕过验证——setup 脚本里硬编码校验签名,跳过只会报Signature mismatch
手动安装 composer-2.2.22.phar(唯一能跑通 Win7 的稳定版)
绕过 setup 脚本,直接拿已签名的旧版 Phar 包,这是目前最稳的路径。
- 去 GitHub Releases 下载:composer-2.2.22.phar(注意选
composer-2.2.22.phar,不是 .exe) - 放到一个固定目录,比如
C:\bin\composer.phar - 写个批处理封装成命令:
C:\bin\composer.bat,内容只有一行:php "%~dp0composer.phar" %*
- 把
C:\bin加进系统环境变量PATH(控制面板 → 系统 → 高级系统设置 → 环境变量 → 系统变量 → PATH → 编辑 → 新增)
PHP 配置必须关掉 openssl.cafile 或显式指定有效证书
Win7 下 PHP 自带的证书包基本失效,强行指定反而触发更隐蔽的 SSL operation failed 错误。
- 打开
php.ini,找到openssl.cafile=这一行 - 要么注释掉:
;openssl.cafile=
- 要么换一个可信证书(推荐 Mozilla CA Bundle):
openssl.cafile="C:\php\cacert.pem"
,然后去 curl.se/cacert.pem 下载最新 pem 放到该路径 - 重启命令行,运行
php -r "print_r(openssl_get_cert_locations());"确认default_cert_file指向正确位置
运行 composer diagnose 仍报 curl extension missing?检查 php.ini 里的扩展路径
Win7 常见问题是 extension_dir 指向错误,导致 php_curl.dll 根本没加载。
- 确认
php_curl.dll文件真实存在(通常在C:\php\ext\php_curl.dll) - 检查
php.ini中extension_dir是否带反斜杠结尾:extension_dir = "C:\php\ext\"
(缺反斜杠会找不到 dll) - 确保
extension=php_curl.dll这行没被注释,且前面没有空格 - 执行
php --ri curl,有输出说明加载成功;如果报Extension 'curl' not present,就是路径或 dll 位数不匹配(32 位 PHP 配 32 位 dll)
Win7 的坑不在 Composer 本身,而在整个底层 TLS 和 DLL 加载链上。配好 PHP + 关掉或重置 openssl.cafile + 用 2.2.x Phar + 手动写 bat 封装,这四步漏一不可。别碰 2.5+,也别信“升级系统根证书”这种方案——Win7 已停止支持,补丁源早关了。










