PHP 7.0.33 与 sqlsrv 给出错误 "SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed]"

PHP 7.0.33 with sqlsrv gives error "SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed]"

我在 PHP Catalina (10.15.7) 上使用带有 PHP 7.0.33、Apache 2.2.34 的 sqlsrv 模块。

本代码块sqlsrv_connect的执行

$serverName = "192.168.4.14";
$connectionInfo = array(
    "Database" => "mydatabase",
    "UID" => "myusername",
    "PWD" => "mypassword"
);
// Create connection
$conn = sqlsrv_connect($serverName, $connectionInfo);

给我错误

[Microsoft][SQL 服务器的 ODBC 驱动程序 17]SSL 提供程序:[无法加载 OpenSSL 库,确保安装了 OpenSSL 1.0 或 1.1]

我的 Mac 上安装了更多版本的 PHP,所以我认为这是错误的原因,但是打开 info.php 页面,它告诉我OpneSSL 模块已加载:

以下是 info.php 给出的关于 pdo_sqlsrv 模块的详细信息:

sqlsrv模块:

关于我还可以检查哪些内容以找到错误原因,您有什么建议吗?

提前谢谢大家。

编辑:info.php 告诉我在配置命令中使用了 --with-openssl=/Applications/MAMP/Library,即 v1.0.2o。

问题似乎是您的机器上没有安装正确版本的 OpenSSL 库(似乎是 catalina 上的问题)。

第 1 步:检查您是否安装了正确的版本。

运行 以下命令(假设 macOS 的位置):ls -l /usr/local/opt/openssl/lib

如果这不起作用,运行以下命令:openssl version

这应该会显示您安装了哪些版本的 OpenSSL 库。 如果你有 1.01.1 你就完成了

第 2 步:安装或升级

如果您安装了 openssl(但不是正确的版本),请使用 brew upgrade openssl

升级它

如果您没有安装 openssl,请使用 brew install openssl

安装它

第 3 步测试

完成这些步骤后,应该可以解决此错误

已解决!!!! 如此处报道:https://github.com/microsoft/homebrew-mssql-release/issues/37.

/usr/local/opt 中,自制软件创建了符号链接 openssl@1.1

此问题与 Microsoft 驱动程序无法读取格式为 opnessl@1.1 的目录有关。

解决方案非常简单,只需重新创建符号链接即可省略 @1.1 后缀:

ln -s /usr/local/Cellar/openssl@1.1/1.1.1k /usr/local/opt/openssl

感谢大家的贡献!