Windows系统无法安装Composer,出现OpenSSL证书验证失败错误
针对你遇到的OpenSSL证书验证失败问题,即使已配置cacert.pem和php.ini,仍有以下几个常见原因:
PHP.ini文件未被正确加载
Composer使用的是PHP CLI(命令行)版本,你修改的php.ini可能不是CLI版本加载的配置文件。
检查方式:打开命令提示符,执行php --ini,查看Loaded Configuration File对应的路径,确认是否是你修改的C:\php\php.ini。如果路径不符或显示(none),说明你修改的不是正确的配置文件。cacert.pem文件权限不足
Windows系统下,若cacert.pem文件或所在目录没有读取权限,PHP无法读取证书内容导致验证失败。
检查方式:右键C:\php\cacert.pem→属性→安全选项卡,确认当前用户(包括管理员账户)拥有读取权限,若没有则添加该权限。cacert.pem文件损坏或不完整
下载过程中可能出现文件损坏,导致证书集合无效。
检查方式:打开cacert.pem文件,确认开头包含-----BEGIN CERTIFICATE-----格式的内容,且文件大小在200KB左右(不同版本略有差异)。若文件为空或内容异常,重新下载证书文件。PHP未读取到更新后的配置
修改php.ini后,未重启相关进程导致配置未生效。
检查方式:修改php.ini后,关闭所有打开的命令提示符和Composer安装程序,重新以管理员身份启动安装程序;或在新的命令窗口执行php -i | findstr "openssl.cafile",确认输出的路径为C:\php\cacert.pem。系统证书存储与自定义证书冲突
部分情况下,PHP会优先使用Windows系统自带的证书存储,而非你配置的cacert.pem,若系统证书过期或异常则会导致验证失败。
检查方式:在命令提示符执行set PHP_OPENSSL_CAFILE=C:\php\cacert.pem,然后重新运行Composer安装程序,强制PHP使用你指定的证书文件。
内容的提问来源于stack exchange,提问作者MrSnrub

