我需要连接到远程MSSQL数据库,我使用docker环境。如何添加sqlsrv驱动程序,我有一个docker文件,如下所示:
FROM php:8.0.5-fpm-alpine
ADD ./php/www.conf /usr/local/etc/php-fpm.d/www.conf
RUN apk add --no-cache tzdata
ENV TZ Europe/Skopje
RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN mkdir -p /var/www/html
RUN chown laravel:laravel /var/www/html
WORKDIR /var/www/html
RUN docker-php-ext-install pdo pdo_mysql
这就是我在一个基于高山的Dockerfile上找到的安装方法:
RUN wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.1.1-1_amd64.apk &&
wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.5.1.1-1_amd64.apk &&
apk add --allow-untrusted msodbcsql17_17.5.1.1-1_amd64.apk &&
apk add --allow-untrusted mssql-tools_17.5.1.1-1_amd64.apk &&
apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc-dev &&
pecl install pdo_sqlsrv &&
docker-php-ext-enable pdo_sqlsrv &&
apk del .phpize-deps &&
rm msodbcsql17_17.5.1.1-1_amd64.apk &&
rm mssql-tools_17.5.1.1-1_amd64.apk
它不起作用,但编译时没有任何错误。你能提供另一个码头文件解决方案吗。
我得到错误:
SQLSTATE[HY000]:[Microsoft][ODBC Driver 17 for SQL Server]协议TDS流错误
我遇到了同样的问题,发现了这个GitHub线程
因此,有一些关于在alpinelinux上安装驱动程序的Microsoft文档。
将这两个源组合在一起可以得到驱动程序的当前版本。我在Dockerfile中包含了以下几行,它们编译起来没有问题:
RUN wget https://download.microsoft.com/download/8/6/8/868e5fc4-7bfe-494d-8f9d-115cbcdb52ae/msodbcsql18_18.1.2.1-1_amd64.apk &&
wget https://download.microsoft.com/download/8/6/8/868e5fc4-7bfe-494d-8f9d-115cbcdb52ae/mssql-tools18_18.1.1.1-1_amd64.apk &&
apk add --allow-untrusted msodbcsql18_18.1.2.1-1_amd64.apk &&
apk add --allow-untrusted mssql-tools18_18.1.1.1-1_amd64.apk &&
apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc-dev &&
pecl install pdo_sqlsrv &&
docker-php-ext-enable pdo_sqlsrv &&
apk del .phpize-deps &&
rm msodbcsql18_18.1.2.1-1_amd64.apk &&
rm mssql-tools18_18.1.1.1-1_amd64.apk