Composer 报错“OpenSSL extension is required”表明 PHP 未启用 OpenSSL 扩展,需先用 php -m | grep openssl 验证是否加载,再检查 php.ini 中 extension=openssl(Windows 为 php_openssl.dll)是否启用、DLL 文件及依赖库是否存在,Linux/macOS 需安装对应系统包,Docker Alpine 需 apk add openssl,最后用 composer diagnose 和 create-project 实际测试 HTTPS 连接。
Composer 报错 “OpenSSL extension is required” 或 “file_get_contents(): SSL operation failed”,说明 PHP 当前没有启用 OpenSSL 扩展,Composer 无法安全连接 HTTPS 源(如 packagist.org)。
确认 OpenSSL 是否真的未启用
别急着改配置,先验证问题根源:
- 运行
php -m | grep openssl—— 若无输出,扩展未加载 - 运行
php -i | grep "openssl"—— 查看是否显示openssl support => enabled - 检查
php.ini中是否存在extension=openssl(Windows 下可能是extension=php_openssl.dll),且该行**未被分号注释** - 注意:CLI 和 Web(如 Apache/Nginx)可能使用不同
php.ini,用php --ini确认 CLI 加载的是哪个文件
Windows 下启用 OpenSSL 的关键步骤
PHP 官方 Windows 版本默认带 OpenSSL,但常因路径或依赖缺失失效:
- 确保
php.ini中已取消注释:extension=php_openssl.dll - 确认
php_openssl.dll文件真实存在于ext/目录下(如C:\php\ext\php_openssl.dll) - 将 PHP 安装目录(如
C:\php)和C:\php\ext加入系统PATH(重启终端生效) - 下载并放置
libcrypto-1_1-x64.dll和libssl-1_1-x64.dll到 PHP 根目录(常见于 PHP 8.1+,从官方 ZIP 包中提取,不能用旧版 DLL 替换)
Linux/macOS 启用 OpenSSL 的常见陷阱
多数发行版 PHP 包默认启用 OpenSSL,但编译安装或容器环境容易漏掉依赖: