优先更新并配置CA证书解决composer的ssl验证失败问题,可下载最新cacert.pem文件并设置php.ini中的openssl.cafile和curl.cainfo指向该文件;或通过COMPOSER_CAFILE环境变量指定证书路径;临时方案包括禁用TLS验证(不推荐生产环境)或对私有仓库使用http协议,但需确保网络安全。

Composer 在使用 https 请求包资源时,可能会因为 SSL 证书验证失败而报错,尤其是在 windows 或某些自定义 PHP 环境中。这类错误通常表现为 “SSL/TLS certificate verification failed” 或 “Could not resolve host: repo.packagist.org” 等提示。以下是几种有效的解决方案。
1. 更新 CA 证书包
Composer 依赖系统的 CA(证书颁发机构)信任列表来验证 HTTPS 连接。如果 CA 包过旧或缺失,就会导致 SSL 验证失败。
- 下载最新的 ca-bundle.crt 文件,推荐从 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251 获取。
- 将下载的文件保存到本地,例如:
C:phpextrassslcacert.pem。 - 打开 php.ini 文件,找到或添加以下配置:
openssl.cafile=C:/php/extras/ssl/cacert.pem curl.cainfo=C:/php/extras/ssl/cacert.pem
注意路径使用正斜杠或双反斜杠,且确保文件路径正确可读。
修改后重启 Web 服务或命令行环境,再运行 composer install 测试。
2. 设置 COMPOSER_CAFILE 环境变量
如果你不想修改全局 php.ini,可以通过环境变量为 Composer 单独指定 CA 证书路径。
- 设置环境变量(Windows 示例):
set COMPOSER_CAFILE=C:phpextrassslcacert.pem
export COMPOSER_CAFILE=/path/to/cacert.pem
该方法适合多 PHP 版本共存或临时调试场景。
3. 临时关闭 SSL 验证(不推荐生产环境)
在测试或内网环境中,若急需跳过证书验证,可临时禁用 SSL 检查。
- 执行以下命令:
composer config --global disable-tls true
或关闭对单个仓库的验证:
composer config --global secure-http false
警告:这会降低安全性,可能导致中间人攻击,仅用于排查问题或受控网络。
4. 使用 HTTP 替代 HTTPS(仅限私有仓库或内部网络)
如果你使用的是私有 Packagist 镜像或局域网服务,可以改为 HTTP 协议。
"repositories": [ { "type": "composer", "url": "http://packagist.example.local" } ]
注意:官方 packagist.org 不支持 HTTP,此方法仅适用于自建服务。
基本上就这些常见处理方式。优先推荐更新 CA 证书并正确配置 php.ini,既安全又稳定。避免长期关闭 TLS 验证,保障依赖下载过程的安全性。