composer怎么解决curl 60错误_composer SSL连接配置【解决】

1次阅读

curl 60 错误本质是 Openssl 无法验证 httpS 证书链,常见于系统根证书过旧、企业中间人代理或 php 证书路径配置错误;应优先更新证书或正确配置 cafile,禁用验证仅限临时排查。

composer怎么解决curl 60错误_composer SSL连接配置【解决】

curl 60 错误本质是 OpenSSL 无法验证 https 证书链,composer 默认启用 SSL 验证,遇到自建 CA、企业代理或过期根证书时就会报 CURLOPT_SSL_VERIFYPEER 失败(错误码 60)。

为什么 composer install 突然报 curl 60?

常见触发场景:

  • 系统根证书库过旧(如 centos 6/7 未更新 ca-certificates
  • 公司网络使用中间人代理(如 Zscaler、Blue Coat),证书由内网 CA 签发
  • PHP 编译时链接了旧版 OpenSSL,或未正确加载系统证书路径
  • windows 上 PHP 使用的 openssl.cafile 指向了一个不存在或不完整的 PEM 文件

检查当前 OpenSSL 和证书路径

先确认问题源头,别急着关验证:

  • 运行 php -r "print_r(openssl_get_cert_locations());",看 default_cert_file 路径是否存在、是否可读
  • 执行 curl -v https://repo.packagist.org/packages.json,观察 TLS 握手阶段是否卡在证书验证
  • 如果 curl 命令本身也报 60,说明是系统级问题,Composer 只是继承了它

安全修复:更新或指定可信证书 bundle

禁用 SSL 验证(composer config -g secure-http false 或改 verify-peer = false)只应作为临时排查手段,生产环境必须避免。推荐做法:

  • linux/macOS:更新系统证书包,例如 sudo update-ca-certificatesdebian/ubuntu)或 sudo yum update ca-certificates(RHEL/CentOS)
  • 手动指定证书路径:下载最新 Mozilla CA bundle(https://curl.se/ca/cacert.pem),然后配置 PHP:
    openssl.cafile=/path/to/cacert.pem(写入 php.ini
  • Composer 层面覆盖:运行 composer config -g cafile /path/to/cacert.pem,该设置优先于 PHP 的 openssl.cafile
  • Windows 用户注意:路径需用正斜杠或双反斜杠,例如 C:/php/cacert.pemC:\php\cacert.pem

企业代理环境下的特殊处理

若你明确处于中间人代理环境(比如浏览器能打开 packagist,但 Composer 不行),需把代理签发的根证书加入信任链:

  • 导出代理根证书(通常浏览器地址栏点击锁图标 → 证书 → 导出为 PEM 格式)
  • 合并到你的 CA bundle:cat proxy-root.crt >> cacert.pem
  • 再通过 composer config -g cafile /path/to/merged-cacert.pem 生效
  • 切勿设置 http-proxy 同时又关掉 SSL 验证——这会让所有包下载裸奔在代理上

最常被忽略的是:PHP CLI 和 Web SAPI 的 php.ini 往往不同,composer 走的是 CLI 版本,务必确认你改的是对的那个 php.ini(用 php --ini 查)。证书路径一旦配错,错误表现和没配一样,但调试时容易误判。

text=ZqhQzanResources