容器中 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
临时通过以下方法处理的:
- 清除对应PHP版本的运行环境
- 清除构建缓存
- 修改“/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
···
- 搜索日志/opt/1panel/runtime/php/php8-3/build.log,看是否有:Installing msodbcsql18