PHP环境怎么安装sqlsrv驱动


照着上面的 扩展写了,

环境安装成功了,但是里面根本没有 sqlsrv 扩展,
要怎么才能安装sqlsrv驱动的php环境

容器中 php -m 看一下有没有 sqlrv

有sqlsrv,我之前搞过忘记了,现在记起来了,是能装的,但是容器里面用不了这个扩展,链接sqlsrv需要openssl 1 的版本,现在容器创建自动就是3.x的,所以驱动连接不了

有办法解决一下吗

理论上可以去容器中卸载 Openssl 再安装指定版本
ps: 我并没有看到 sqlrv 需要 openssl 1 的版本要求 是你部署应用的要求吗

SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed]

报这个错,我之前搞过一次openssl,好像没弄好,您这边有文档可以参考一下吗

Microsoft Drivers for PHP for SQL Server 17 需要openssl 1.0

现在默认安装的都是17

如果要使用openssl 3,需要安装 Microsoft Drivers for PHP for SQL Server 18

临时通过以下方法处理的:

  1. 清除对应PHP版本的运行环境
  2. 清除构建缓存
  3. 修改“/opt/1panel/resource/apps/remote/php8/8.3.8/build/php/extensions/install.sh”中安装pdo_sqlsrv部分代码,大概484行附近

···
if [[ -z “${EXTENSIONS##,pdo_sqlsrv,}” ]]; then
isPhpVersionGreaterOrEqual 8 0
if [[ “$?” = “1” ]]; then
echo “---------- Install pdo_sqlsrv ----------”
install-php-extensions pdo_sqlsrv
# apk add --no-cache unixodbc-dev
# printf “\n” | pecl install pdo_sqlsrv
# docker-php-ext-enable pdo_sqlsrv
# curl -o /tmp/msodbcsql17_amd64.apk https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.2.1-1_amd64.apk
# apk add --allow-untrusted /tmp/msodbcsql17_amd64.apk
else
echo “pdo_sqlsrv requires PHP >= 8.0.0, installed version is ${PHP_VERSION}”
fi
fi
···

  1. 搜索日志/opt/1panel/runtime/php/php8-3/build.log,看是否有:Installing msodbcsql18