dlo*_*ove 27 php sql-server docker sqlsrv fpm
直到几天前,这一直在进行。我们正在使用以下代码构建一个 docker 容器,但这是尝试“pecl install sqlsrv”时发生的错误。尝试从该容器中的 PHP 连接到 mssql 服务器。有比我聪明的人有什么想法吗?
泊坞窗文件:
FROM --platform=linux/amd64 php:8.0-fpm
RUN apt-get update && apt-get -y install nano apt-utils libxml2-dev gnupg \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& docker-php-ext-install zip
RUN apt-get -y install libicu-dev gcc g++ make autoconf libc-dev pkg-config libssl-dev apt-transport-https libgss3
# Install MS ODBC Driver for SQL Server
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update
# Automatically accept the terms from Microsoft
RUN apt-get install -y unixodbc unixodbc-dev odbcinst locales
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
RUN apt-get -y install gcc g++ make autoconf libc-dev pkg-config
RUN apt-get update
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-enable sqlsrv pdo_sqlsrv
Run Code Online (Sandbox Code Playgroud)
错误:
#0 41.16 In file included from /usr/include/sql.h:19,
#0 41.16 from /tmp/pear/temp/sqlsrv/shared/xplat.h:30,
#0 41.16 from /tmp/pear/temp/sqlsrv/shared/typedefs_for_linux.h:23,
#0 41.16 from /tmp/pear/temp/sqlsrv/shared/xplat_winnls.h:24,
#0 41.16 from /tmp/pear/temp/sqlsrv/shared/FormattedPrint.h:24,
#0 41.16 from /tmp/pear/temp/sqlsrv/shared/core_sqlsrv.h:41,
#0 41.16 from /tmp/pear/temp/sqlsrv/php_sqlsrv_int.h:25,
#0 41.16 from /tmp/pear/temp/sqlsrv/conn.cpp:24:
#0 41.16 /usr/include/sqltypes.h:56:10: fatal error: unixodbc.h: No such file or directory
#0 41.16 56 | #include "unixodbc.h"
#0 41.16 | ^~~~~~~~~~~~
#0 41.16 compilation terminated.
#0 41.18 make: *** [Makefile:209: conn.lo] Error 1
#0 41.19 ERROR: `make' failed
Run Code Online (Sandbox Code Playgroud)
我尝试过从 7.0 到 8.1 的所有 PHP 版本,无论是否使用 fpm。我还尝试了多个版本的 msodbcsql 和 unixodbc/unixodbc-dev 以及多个版本的 sqlsrv 和 pdo_sqlsrv。
小智 15
我通过安装以下软件包版本解决了该问题:
apt-get install unixodbc-dev=2.3.7 unixodbc=2.3.7 odbcinst1debian2=2.3.7 odbcinst=2.3.7
Run Code Online (Sandbox Code Playgroud)
使用它直到错误得到解决。
来源: https: //github.com/microsoft/linux-package-repositories/issues/36
使用 Drive 5.10.0 或 5.10.1 的 Debian 10 和 11 会出现此问题
使用驱动程序 5.9.0 和 Debian 10、PHP 7.4 但存储 Microsoft debian 9。它可以工作!
在 Debian 10 中,php 8.1 将存储库从 Debian 10 更改为 Debian 9。它将创建 Docker 脚本,我还没有测试它是否会连接到数据库,我相信是的。
将https://packages.microsoft.com/config/debian/10/prod.list更改 为 https://packages.microsoft.com/config/debian/9/prod.list
| 归档时间: |
|
| 查看次数: |
4764 次 |
| 最近记录: |