Composer报错是因PHP缺少openssl扩展,需启用该扩展以支持HTTPS下载;Linux/macOS修改php.ini或conf.d配置,Windows检查dll文件和路径;禁用HTTPS验证仅限临时排查,不可用于生产环境。

为什么 Composer 报这个错
这个错误不是 Composer 本身的问题,而是 PHP 运行时缺失 openssl 扩展。Composer 默认强制启用 HTTPS 下载包,而 HTTPS 依赖 OpenSSL 库和对应的 PHP 扩展。如果 php -m | grep openssl 返回空,或 php -i | grep "OpenSSL support" 显示 disabled,就确认是扩展未启用。
检查并启用 openssl 扩展(Linux/macOS)
先确认 PHP 配置文件位置:php --ini,通常主配置是 php.ini。打开该文件,查找以下行:
;extension=openssl ;extension=php_openssl.dll
取消注释对应行(Linux/macOS 用 extension=openssl,Windows 才用 php_openssl.dll)。注意:某些系统(如 Ubuntu 的 php-opcache 包)可能把扩展配置拆到 /etc/php/*/cli/conf.d/ 下,直接在该目录建软链或写 openssl.ini 更稳妥:
echo "extension=openssl" | sudo tee /etc/php/*/cli/conf.d/20-openssl.ini
改完后必须重启 CLI 环境(关闭终端重开),再运行 php -m | grep openssl 验证是否列出。
Windows 下常见坑:dll 文件缺失或路径不对
Windows 用户容易卡在两处:
-
php_openssl.dll文件实际不存在于ext/目录下(尤其某些精简版 PHP 包)——需从完整版 PHP 下载页补全整个ext/文件夹 -
php.ini中extension_dir路径写错,比如写成相对路径或漏了反斜杠,导致 PHP 找不到php_openssl.dll - 系统环境变量
PATH没包含 PHP 的ext/所在目录,部分旧版 OpenSSL 依赖外部libeay32.dll和ssleay32.dll,需确保它们在PATH或 PHP 目录下
验证方式:运行 php -r "print_r(openssl_get_cipher_methods());",不报错且输出数组即成功。
跳过 SSL 验证?不推荐但可临时应急
仅限开发机、内网离线环境等绝对可信场景。执行以下命令会禁用所有 HTTPS 校验:
composer config -g secure-http false
之后还需手动改源为 HTTP(如 composer config -g repo.packagist composer https://packagist.org → 改成 http://packagist.org),但注意:HTTP 源已全面弃用,Packagist 自 2023 年起拒绝 HTTP 请求。所以这不是真正解决方案,只是帮你定位是不是纯 OpenSSL 问题。
真正要上线的项目,openssl 扩展必须启用;否则连 packagist.org 都无法连接,更别说安装任何包。










