Composer报OpenSSL错误本质是PHP缺少SSL/TLS支持,需启用openssl扩展并正确配置curl.cainfo指向有效CA证书路径。

Composer 报 OpenSSL 错误,本质是 PHP 缺少可用的 SSL/TLS 支持,不是 Composer 本身的问题。
检查 php.ini 是否启用了 openssl 扩展
Composer 依赖 PHP 的 openssl 扩展发起 HTTPS 请求。常见错误如 file_get_contents(): Unable to find the wrapper "https" 或 cURL error 60: SSL certificate problem,往往源于该扩展未启用。
- 运行
php -m | grep openssl(Linux/macOS)或php -m(Windows)确认openssl是否在已加载模块列表中 - 若未出现,编辑
php.ini,取消注释这行:;extension=openssl→ 改为extension=openssl - 注意:CLI 和 Web 服务器(如 Apache/Nginx)可能使用不同
php.ini,用php --ini查看 CLI 实际加载路径 - 改完后必须重启 PHP CLI 进程(直接关掉终端重开)或 Web 服务,否则不生效
curl.cainfo 配置缺失或路径错误
即使 openssl 扩展已启用,PHP 的 cURL 仍需可信 CA 证书包才能验证 HTTPS 站点身份。Windows 下尤其容易出问题,报错常含 SSL certificate problem: unable to get local issuer certificate。
- 下载最新 CA 包:从 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251 保存为本地文件(如
C:\php\cacert.pem) - 在
php.ini中添加或修改:curl.cainfo = "C:\php\cacert.pem"(Windows 路径需用双引号,反斜杠可保留或改为正斜杠) - Linux/macOS 用户一般无需手动配置,系统 CA 库通常被自动识别;若异常,也可指定:
curl.cainfo = "/etc/ssl/certs/ca-certificates.crt" - 确认配置生效:运行
php -r "print_r(openssl_get_cert_locations());",检查default_cert_file值是否匹配你设置的路径
Composer 自身证书校验绕过(仅限临时调试)
不推荐长期使用,但可快速验证是否为证书问题。绕过会降低安全性,且某些企业网络策略可能禁止此操作。
- 临时禁用 SSL 验证(当前命令生效):
composer install --no-secure-http - 全局禁用(高风险!):
composer config -g secure-http false,之后所有 HTTPS 源都跳过证书检查 - 更安全的替代:用
composer config -g cafile /path/to/cacert.pem指定自定义 CA 文件,而非完全关闭 - 注意:
--no-secure-http在较新 Composer 版本中已被移除,应优先修复 CA 配置
真正稳定的解法永远是让 PHP 正确加载 openssl 扩展并指向有效的 CA 证书路径。很多“重装 PHP”或“换镜像”的操作,其实只是意外覆盖了错误的 php.ini 配置——关键不在版本,而在那几行配置是否真实生效。










