问题
- PHP版本由8.1.20升级到8.2.16,运行项目时报错 Severity: error --> Exception: Call to undefined function openssl_pkey_get_private()
- 检查了PHP8.2.16扩展含有php_openssl.dll,并且php.ini中配置了extension=php_openssl.dll,还是会报错
- 复制php安装目录中的 libeay32.dll、ssleay32.dll、php8ts.dll,以及扩展目录的php_openssl.dll 至 c:\windows\system32,重启apache,还是会报错(这里得说明一下,从官网下载的PHP8.2.16,安装目录没有libeay32.dll、ssleay32.dll,是在其他版本复制过来的)
原因
在这篇文档中找到了答案 win环境php7.2无法加载curl,openssl的问题解决方法
低版本的PHP安装目录中的libeay32.dll、ssleay32.dll,在高版本中变为了libcrypto-1_1-x64.dll、libssl-1_1-x64.dll
而在PHP8.2.16中,则是变为了libcrypto-3-x64.dll、libssl-3-x64.dll。因此大家要根据PHP安装目录实际情况解决问题
解决方案
把PHP8.2.16安装目录下的 libcrypto-3-x64.dll 和 libssl-3-x64.dll 复制到apache的bin目录中(我机器上的目录是 ..\apache\apache2.4.41\bin,具体位置请根据实际情况而定),重启apache服务器即可