PHP未启用openssl扩展导致composer install失败,因Composer依赖该扩展实现HTTPS连接;需先用php -m | grep openssl验证是否启用,再根据系统环境启用对应扩展。

PHP 未启用 openssl 扩展导致 composer install 失败
直接原因很明确:composer install 或 composer create-project 报错提示 The openssl extension is required for SSL/TLS protection,说明 PHP 运行时没加载 openssl 扩展。这不是 Composer 自身问题,而是底层 PHP 环境缺失必要扩展。
确认当前 PHP 是否启用了 openssl
别急着改配置,先验证问题是否真实存在。运行以下命令:
php -m | grep openssl
如果无输出,说明扩展确实没启用;如果输出 openssl,但 Composer 仍报错,可能是 CLI 和 Web 使用了不同 php.ini —— 此时应检查 php -i | grep "Loaded Configuration File" 确认 CLI 实际加载的配置路径。
-
php -v查看 CLI 使用的 PHP 版本,避免在错误版本下修改配置 - Windows 下常见是
php.ini-development或php.ini-production被重命名但未启用,需确保使用的是真实生效的php.ini - Linux/macOS 若用包管理器安装(如 apt、brew),扩展可能单独打包,需额外安装(如
sudo apt install php-openssl)
Windows 下启用 openssl 扩展的实操步骤
多数 Windows 用户用 XAMPP、WAMP 或手动解压 PHP,关键动作是编辑 php.ini 文件并重启 CLI 环境(不是浏览器):
- 找到 CLI 模式下生效的
php.ini(用php --ini查看) - 搜索
;extension=openssl,去掉前面的分号(;),改为extension=openssl - 确认
extension_dir指向正确(如extension_dir = "ext",且该目录下存在php_openssl.dll) - 保存后,在终端重新运行
php -m | grep openssl验证
注意:某些旧版 PHP(如 7.2 以前)可能需要同时启用 php_sockets.dll,否则 openssl 无法初始化。
Linux/macOS 下 openssl 扩展不可用的典型场景
系统级 PHP(如 Ubuntu 的 php-cli)通常默认启用 openssl,但以下情况会失效:
- 用
phpbrew或asdf切换 PHP 版本后,新版本编译时未加--with-openssl参数 - Docker 容器中基于
alpine构建,缺少openssl-dev和php7-openssl包(Alpine 需显式安装) - Mac 上用 Homebrew 安装 PHP 后,扩展目录权限异常或
.so文件路径不匹配(常见于升级后)
修复建议:
sudo apt update && sudo apt install php-openssl # Ubuntu/Debian
brew reinstall php # macOS,强制重装并链接扩展
若用 Alpine,Dockerfile 中需包含:
apk add --no-cache openssl php7-openssl
openssl 是 Composer 安装包时建立 HTTPS 连接的底层依赖,不是可选功能。很多用户改完 php.ini 就以为搞定,却忘了 CLI 和 Web 用的是两套配置,或者没确认 php -m 输出里真有它 —— 最稳妥的做法,永远是先 php -m | grep openssl,再动手改。










