答案是配置正确的CA证书路径可解决composer的ssl证书问题。首先在php.ini中设置curl.cainfo和openssl.cafile指向下载的cacert.pem文件;其次避免在生产环境使用composer config –global disable-tls true等不安全方式;然后通过系统包管理器更新CA证书包;最后windows用户需手动下载并配置证书路径,完成后运行composer diagnose验证修复效果。

当使用 Composer 安装或更新 PHP 包时,如果遇到 “SSL certificate problem: unable to get local issuer certificate” 错误,说明 Composer 在通过 httpS 请求远程服务器(如 packagist.org)时无法验证 SSL/TLS 证书。这通常与本地环境的 CA 证书配置有关。以下是解决该问题的几种有效方式。
1. 确保 php.ini 配置了正确的 CA 证书路径
PHP 的 cURL 扩展需要一个受信任的证书颁发机构(CA)证书包来验证 https 连接。Composer 基于 cURL 或 PHP 的 stream wrappers 发起请求,因此必须正确配置 curl.cainfo 或 openssl.cafile。
打开你的 php.ini 文件(可通过 php –ini 查看位置),确保包含以下设置:
- curl.cainfo = /path/to/cacert.pem
- openssl.cafile = /path/to/cacert.pem
你需要下载最新的 CA 证书包(例如从 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251),保存到本地(如 C:phpextrascacert.pem 或 /etc/ssl/certs/cacert.pem),然后在 php.ini 中指定路径。
修改后重启 Web 服务或命令行环境,并运行 php -r “print_r(openssl_get_cert_locations());” 检查是否生效。
2. 使用 Composer 自带的证书禁用警告(不推荐用于生产)
临时绕过 SSL 验证可用于测试环境,但会带来安全风险,不应在生产中使用。
你可以通过以下命令关闭 SSL 验证:
composer config –global disable-tls true
composer config –global secure-http false
注意: 这会使所有 HTTPS 请求降级为不安全连接,容易受到中间人攻击。建议仅在调试时临时使用,完成后应恢复设置:
composer config –global disable-tls false
composer config –global secure-http true
3. 更新系统和 CA 证书包
在 linux 或 macOS 上,系统级的 CA 证书可能已过时。使用包管理器更新证书包:
- ubuntu/debian: sudo apt update && sudo apt install ca-certificates
- centos/RHEL: sudo yum update ca-certificates 或 sudo dnf update ca-certificates
- macOS (Homebrew): brew install curl-ca-bundle
之后确认 php.ini 中的 openssl.cafile 指向系统证书路径,如 /etc/ssl/certs/ca-certificates.crt(Linux)或 /usr/local/etc/openssl/cert.pem(macos)。
4. Windows 环境常见问题处理
Windows 用户常因未配置证书路径而报错。建议步骤如下:
- 下载 cacert.pem:访问 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251
- 保存到 PHP 目录,如 C:phpextrascacert.pem
- 编辑 php.ini,添加:
- curl.cainfo = “C:phpextrascacert.pem”
- openssl.cafile = “C:phpextrascacert.pem”
- 重启命令行,运行 composer diagnose 检查网络连接是否正常
基本上就这些。只要正确配置 CA 证书路径,绝大多数 SSL 验证失败问题都能解决。保持系统和 PHP 环境更新,也能避免类似问题反复出现。