如何开启XAMPP中的openssl扩展以支持HTTPS请求处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计852个文字,预计阅读时间需要4分钟。
XAMPP默认已编译OpenSSL,但OpenSSL在PHP中默认禁用,未启动。因此,访问HTTPS、使用Composer安装、JWT签名等操作都会失败,显示SSL operation failed。此时,直接返回false或空内容。
确认 php.ini 路径并启用 extension=openssl
很多人改错了文件:XAMPP 的 Apache 和 CLI(命令行)可能使用不同 php.ini。先运行 php --ini(命令行)和 phpinfo()(浏览器中访问 http://localhost/dashboard/phpinfo.php),比对 “Loaded Configuration File” 路径是否一致。常见情况:
- Apache 用的是
C:\xampp\php\php.ini(新版 XAMPP 8.0+)或C:\xampp\apache\bin\php.ini(旧版) - CLI(如 Composer)用的是
C:\xampp\php\php.ini - 务必两边都改,否则浏览器能跑 HTTPS 请求,命令行却失败
找到对应 php.ini,搜索 ;extension=openssl,删掉开头分号;不要写成 extension=php_openssl.dll,XAMPP 的 extension_dir 已预设正确路径,硬写 DLL 名称反而加载失败。
必须同时启用 curl 扩展且顺序不能错
curl 依赖 openssl,如果只开 curl 不开 openssl,curl_init() 可能静默返回 false,curl_error() 却为空——这是最常被忽略的连带问题。
- 在同一个
php.ini中,确保extension=openssl出现在extension=curl之前(顺序敏感) - 同样取消注释
;extension=curl→extension=curl - 修改后必须重启 Apache(不是刷新页面),否则扩展不生效
Windows 下 Apache 启动失败?检查 libssl / libcrypto DLL
如果你用的是 XAMPP 7.4 或 8.x,且 Apache 启动时报错 “The requested operation has failed” 或日志里出现 “SSL Library Error”,大概率是缺失运行时 DLL:
- 进入
C:\xampp\php目录,确认存在libcrypto-1_1-x64.dll和libssl-1_1-x64.dll - 把这两个文件复制到
C:\xampp\apache\bin\(Apache 的 bin 目录) - 不用复制到
System32,也不用加系统 PATH——Apache 启动时只从自身bin目录加载依赖 DLL
这一步在 XAMPP 8.0+ 中通常已预置,但升级 PHP 子版本(如手动替换 php/ 文件夹)后容易遗漏。
HTTPS 请求能发出去 ≠ 本地开发能跑通 HTTPS 站点
开启 openssl 扩展只是让 PHP 能处理 TLS 连接,不代表你的 Apache 就能响应 https://localhost。后者需要额外配置:
- Apache 必须加载
mod_ssl(检查httpd.conf中LoadModule ssl_module modules/mod_ssl.so未被注释) - 需生成证书并配置
httpd-ssl.conf,否则访问 https 会直接连接被拒绝 - 浏览器访问自签名证书时提示“不安全”,需手动将
server.crt导入系统“受信任的根证书颁发机构”存储,否则某些 JS fetch 或 iframe 会拦截
也就是说:PHP 开启 openssl 是 HTTPS 请求的必要条件,但不是充分条件;服务端 HTTPS 和客户端证书信任是两个独立要解决的问题。
本文共计852个文字,预计阅读时间需要4分钟。
XAMPP默认已编译OpenSSL,但OpenSSL在PHP中默认禁用,未启动。因此,访问HTTPS、使用Composer安装、JWT签名等操作都会失败,显示SSL operation failed。此时,直接返回false或空内容。
确认 php.ini 路径并启用 extension=openssl
很多人改错了文件:XAMPP 的 Apache 和 CLI(命令行)可能使用不同 php.ini。先运行 php --ini(命令行)和 phpinfo()(浏览器中访问 http://localhost/dashboard/phpinfo.php),比对 “Loaded Configuration File” 路径是否一致。常见情况:
- Apache 用的是
C:\xampp\php\php.ini(新版 XAMPP 8.0+)或C:\xampp\apache\bin\php.ini(旧版) - CLI(如 Composer)用的是
C:\xampp\php\php.ini - 务必两边都改,否则浏览器能跑 HTTPS 请求,命令行却失败
找到对应 php.ini,搜索 ;extension=openssl,删掉开头分号;不要写成 extension=php_openssl.dll,XAMPP 的 extension_dir 已预设正确路径,硬写 DLL 名称反而加载失败。
必须同时启用 curl 扩展且顺序不能错
curl 依赖 openssl,如果只开 curl 不开 openssl,curl_init() 可能静默返回 false,curl_error() 却为空——这是最常被忽略的连带问题。
- 在同一个
php.ini中,确保extension=openssl出现在extension=curl之前(顺序敏感) - 同样取消注释
;extension=curl→extension=curl - 修改后必须重启 Apache(不是刷新页面),否则扩展不生效
Windows 下 Apache 启动失败?检查 libssl / libcrypto DLL
如果你用的是 XAMPP 7.4 或 8.x,且 Apache 启动时报错 “The requested operation has failed” 或日志里出现 “SSL Library Error”,大概率是缺失运行时 DLL:
- 进入
C:\xampp\php目录,确认存在libcrypto-1_1-x64.dll和libssl-1_1-x64.dll - 把这两个文件复制到
C:\xampp\apache\bin\(Apache 的 bin 目录) - 不用复制到
System32,也不用加系统 PATH——Apache 启动时只从自身bin目录加载依赖 DLL
这一步在 XAMPP 8.0+ 中通常已预置,但升级 PHP 子版本(如手动替换 php/ 文件夹)后容易遗漏。
HTTPS 请求能发出去 ≠ 本地开发能跑通 HTTPS 站点
开启 openssl 扩展只是让 PHP 能处理 TLS 连接,不代表你的 Apache 就能响应 https://localhost。后者需要额外配置:
- Apache 必须加载
mod_ssl(检查httpd.conf中LoadModule ssl_module modules/mod_ssl.so未被注释) - 需生成证书并配置
httpd-ssl.conf,否则访问 https 会直接连接被拒绝 - 浏览器访问自签名证书时提示“不安全”,需手动将
server.crt导入系统“受信任的根证书颁发机构”存储,否则某些 JS fetch 或 iframe 会拦截
也就是说:PHP 开启 openssl 是 HTTPS 请求的必要条件,但不是充分条件;服务端 HTTPS 和客户端证书信任是两个独立要解决的问题。

