欢迎您访问新疆栾骏商贸有限公司,公司主营电子五金轴承产品批发业务!
全国咨询热线: 400-8878-609

新闻资讯

行业动态

composer提示SSL证书验证失败怎么办_cacert.pem路径配置【方案】

作者:穿越時空2026-01-06 00:00:00
最稳妥解法是修改 php.ini 中的 curl.cainfo 或 openssl.cafile 指向有效 cacert.pem;需下载 Mozilla 官方证书、正确配置路径并重启服务,因 Composer 的 cafile 配置不作用于 PHP 底层 HTTPS 调用。

直接改 php.ini 里的 curl.cainfoopenssl.cafile 是最稳妥的解法,临时禁用 SSL 验证(composer config -g secure-http false)只适合离线调试,不建议长期用。

确认当前 PHP 使用的 CA 证书路径

Composer 依赖 PHP 的 cURL 和 OpenSSL 扩展验证 HTTPS,而它们默认从系统或 PHP 自身配置里找根证书。运行以下命令查看实际生效路径:

php -r "print_r(openssl_get_cert_locations());"

重点关注输出中的 default_cert_filecafile 字段。如果值为空、路径不存在,或指向一个过期/损坏的 cacert.pem,就会报 SSL 验证失败。

下载并配置有效的 cacert.pem

推荐使用 Mozilla 维护的权威证书包,比系统自带更及时:

  • 访问 https://www./link/5fe4dadcdb001d8566cd20e6d8a20251 下载最新 cacert.pem
  • 保存到一个固定路径,例如:/usr/local/etc/php/cacert.pem(macOS/Linux)或 C:\php\extras\ssl\cacert.pem(Windows)
  • 编辑你的 php.ini,添加或修改两行(二者选其一即可,优先用 curl.cainfo):
    curl.cainfo="/usr/local/etc/php/cacert.pem"
    openssl.cafile="/usr/local/etc/php/cacert.pem"
  • 重启 Web 服务或 CLI 环境,再执行 php -m | grep curlcomposer diagnose 验证是否生效

为什么不能只配 Composer 自己的 cafile?

Composer 的 config cafile(即 composer config -g cafile /path/to/cacert.pem)只影响 Composer 自身的 HTTP 请求,不控制 PHP 内部的 file_get_contents()stream_context_create() 等调用——而某些插件、脚本或依赖安装过程会绕过 Composer 的 HTTP 封装,直接走 PHP 底层,此时仍会因系统证书缺失报错。所以必须从 PHP 层统一配置。

Windows 下常见陷阱

Windows 用户容易踩两个坑:

  • 路径中用了反斜杠 \ 却没加转义或没用双引号,导致 php.ini 解析失败,应写成:curl.cainfo="C:\\php\\extras\\ssl\\cacert.pem"curl.cainfo="C:/php/extras/ssl/cacert.pem"
  • PHP 版本混用:WAMP/XAMPP/手动安装的 PHP 可能有多个 php.ini(CLI 用一个,Apache 用另一个),务必确认你改的是 php --ini 显示的那一个

证书路径一旦配错,错误信息往往还是 “SSL certificate problem: unable to get local issuer certificate”,不会提示路径不存在——得靠 openssl_get_cert_locations() 实锤。