phpenv需手动启用openssl扩展并复制libcrypto-1_1-x64.dll和libssl-1_1-x64.dll到apache/bin目录,配置openssl.cafile指向ca证书文件,否则https功能无法正常工作。

phpEnv 默认不启用 openssl 扩展,必须手动配置才能使用 openssl_encrypt、file_get_contents("https://...") 或 cURL 的 HTTPS 功能。
确认 phpEnv 实际加载的 php.ini 路径
phpEnv 是 Windows 下的便携式 PHP 环境,它可能同时存在多个 php.ini 文件(如 php-apache2handler.ini、php-cli.ini),而 Web 请求走的是 Apache 模块模式,所以必须改对那个被 Apache 加载的配置文件。
- 运行
php --ini查看 CLI 模式用的配置 —— 这个不重要,别改错 - 在 phpEnv 根目录下打开
Apacheconfhttpd.conf,搜索PHPIniDir,它指定的就是 Apache 实际读取的php.ini路径(常见为../php/php-apache2handler.ini) - 用记事本或 VS Code 打开该文件,不要用系统自带“记事本”保存 UTF-8 BOM,否则 Apache 可能启动失败
启用 openssl 扩展并检查依赖 DLL
phpEnv 的 PHP 版本(尤其是 7.4+)需要两个关键 DLL 文件才能让 openssl 正常工作,仅取消注释扩展行是不够的。
- 在
php-apache2handler.ini中找到并取消注释:extension=openssl(PHP 7.4+ 推荐写法;若无效可试extension=php_openssl.dll) - 确认
extension_dir指向正确路径,例如:extension_dir = "D:/phpEnv/php/ext" - 把
php/目录下的libcrypto-1_1-x64.dll和libssl-1_1-x64.dll复制到Apache/bin/目录下(不是system32,也不需要ssleay32.dll) - 重启 phpEnv 的 Apache 服务(通过托盘图标或
Apacheinhttpd.exe -k restart)
验证 openssl 是否真正可用
改完配置后,phpinfo() 显示 “OpenSSL Support => enabled” 仍可能只是假象 —— 因为扩展加载成功 ≠ 函数可调用 ≠ HTTPS 可通。
- 新建
test.php,内容为:<?php var_dump(extension_loaded('openssl'));,浏览器访问应输出bool(true) - 执行
php -r "print_r(openssl_get_cipher_methods());",有大量算法列表才说明底层正常 - 测试 HTTPS 请求:
file_get_contents('https://httpbin.org/get'),若报错SSL certificate problem: unable to get local issuer certificate,说明 CA 证书链缺失,需补上openssl.cafile配置
CA 证书路径和 SSL 验证绕过风险
phpEnv 没有预置可信 CA 包,file_get_contents 或 cURL 访问 HTTPS 站点时默认校验证书链,失败即中断 —— 这不是 openssl 扩展没开,而是信任链断了。
- 下载官方 CA 包:https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251,保存为
D:/phpEnv/cacert.pem - 在
php-apache2handler.ini中添加:openssl.cafile="D:/phpEnv/cacert.pem" - 开发调试时可临时禁用验证(仅限本地):
stream_context_create(['http' => ['ignore_errors' => true], 'ssl' => ['verify_peer' => false, 'verify_peer_name' => false]]),但上线前必须删掉 - 注意:Windows 下路径分隔符用正斜杠
/或双反斜杠\,单反斜杠会被 PHP 当作转义字符处理
最常被忽略的一点:phpEnv 启动 Apache 时,如果 Apache/bin/ 下缺少那两个 lib DLL,即使 phpinfo() 显示 enabled,所有 openssl 函数调用都会静默失败或直接崩溃,错误日志里也不会报明显提示 —— 务必确认 DLL 已复制且版本匹配。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











