php 8.0 安装 yii2 时 openssl 扩展缺失的本质是 cli 环境未正确启用、验证和配置:需确认 php.ini 路径,启用 extension=openssl,检查依赖文件及 ca 证书路径,并确保 composer 调用同一 php 实例。

PHP 8.0 安装 Yii2 时 openssl 扩展缺失,不是“装不上”,而是没启对、没配对、没验对。关键在三点:确认 CLI 环境真实加载了 openssl,确保它能真正发起 HTTPS 请求(不只是加载成功),且 Composer 调用的是这个环境。
先验证是不是真缺 openssl
别只看 php -v 或 phpinfo() 页面——Web 环境和命令行可能用不同配置。
- 运行 php --ini,记下 “Loaded Configuration File” 路径,这才是 CLI 模式实际读的 php.ini
- 执行 php -m | findstr openssl(Windows)或 php -m | grep openssl(macOS/Linux),无输出才说明未启用
- 再跑一句 php -r "echo extension_loaded('openssl') ? 'yes' : 'no';",输出 no 就是彻底没加载
启用 openssl 的实操要点
PHP 8.0+ 已统一使用 extension=openssl(Windows 不再写 .dll 后缀),但路径和依赖文件必须到位。
- 打开上一步确认的 php.ini,搜索 extension=openssl,删掉前面的分号;若整行不存在,就手动添加一行
- 检查 extension_dir 是否指向当前 PHP 版本的 ext 目录(例如 D:\php\php-8.0.28\ext),不是系统默认路径或旧版本目录
- 进到该 ext 目录,确认存在 php_openssl.dll(Windows)或 openssl.so(Linux/macOS);缺失就从同版本官方二进制包里复制
- Windows 用户额外检查:PHP 根目录下是否有 libcrypto-*.dll 和 libssl-*.dll,缺则无法加载 openssl(静默失败)
让 Composer 真正用上 openssl
即使 php -m 显示 openssl 已加载,Composer 仍报错,大概率是它调用了另一个 PHP 实例,或 CA 证书路径未设。
- 运行 composer diagnose,重点看 “PHP OpenSSL extension” 和 “OpenSSL version” 行,是否显示 enabled + 版本号
- 执行 php -r "print_r(openssl_get_cert_locations());",确认 default_cert_file 路径存在且可读;为空或报错,需手动配置 cafile
- 在 php.ini 中追加两行(路径按实际调整):
openssl.cafile=/path/to/cacert.pem
curl.cainfo=/path/to/cacert.pem
(推荐从 curl.se 下载最新 CA bundle) - 改完重启终端(CLI 环境不自动重读 php.ini),再试 composer install
临时绕过与长期建议
开发阶段可快速验证逻辑,但绝不用于部署。
- 仅限本地调试:运行 composer install --ignore-platform-reqs 跳过扩展校验(不解决根本问题)
- 更稳妥的临时方案:composer config -g secure-http false(禁用 HTTPS 强制要求,仍需 openssl 基础支持)
- 长期建议:放弃 phpEnv 这类非标准集成包,改用 WAMP/XAMPP(勾选 openssl)、或官方 PHP 二进制包 + 手动配置,环境可控性高得多
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











