Mac M1 SQL 服务器 SQLSrv 无法加载 OpenSSL 库,请确保已安装 OpenSSL 1.0 或 1.1

Mac M1 SQL Server SQLSrv OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed

我刚买了一个 M1 Mac mini 运行 Big Sur 11.6,我已经安装了 PHP 7.3、msodbcsql17、mssql-tools、sqlsrv 和 pdo_sqlsrv。

但是当我尝试使用 sqlsrv 连接时,发生以下错误[Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1已安装]

我已经通过 brew 安装了 openssl@1.1,我的配置文件包含

export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"

似乎 PHP 使用了正确的版本,当打印 echo OPENSSL_VERSION_TEXT 时,它说 OpenSSL 1.1.1l 24 Aug 2021

我不确定还可以尝试什么才能让它发挥作用?

我今天(在 Intel Mac 上)尝试通过 isql 连接时遇到相同的“无法加载 OpenSSL 库”错误。 (另外,使用 python 作为 pyodbc 错误“08001”:SQL 服务器客户端无法建立连接的 ODBC 驱动程序 17)。

显然,截至 2021 年 10 月上旬,最新的 SQL 服务器 ODBC 驱动程序与最新版本的 OpenSSL 3 不兼容。

参见:https://github.com/microsoft/homebrew-mssql-release/issues/59

诊断:检查正在调用哪个 OpenSSL 版本:

ls -l /usr/local/opt/openssl/lib 

您应该看到 OpenSSL 1.0 或 1.1 的条目(例如 libssl.dylib -> libssl.1.1.dylib);当我遇到这个问题时,它显示 libssl.dylib -> libssl.3.dylib.

解决方法是创建一个符号链接。 (使用“brew info openssl@1.1”检查filename/path。)例如:

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

对于 M1 Mac,bre​​w install 的默认位置是 /opt/homebrew,而不是 /usr/local。请参考这个link。因此,你需要add/change的symlink是:

ln -sfn /opt/homebrew/Cellar/openssl@1.1/1.1.1m /opt/homebrew/opt/openssl

在强制替换 link 时使用选项 -f,而使用 -n 作为源 link 是一个目录。当然,如果你的openssl不是1.1.1m.

,请更改版本