【问题标题】:Install / Configure SQL Server PDO driver for PHP docker image为 PHP docker 映像安装/配置 SQL Server PDO 驱动程序
【发布时间】:2019-01-26 17:11:53
【问题描述】:

我有一个简单的docker文件,如下:

FROM php:7.2-apache
COPY src/ /var/www/html/

通常要为 Mongo 或 MySQL 连接安装驱动程序,我会通过在 dockerfile 中添加以下内容来实现:

docker-php-ext-install mongo

在这种情况下,我想将我的 php 应用程序连接到 SQL Server 数据库,并且我了解为 php 7.x 执行此操作的最佳方法是使用 PDO 驱动程序,但是我不熟悉如何配置它在 dockerfile 中。

我尝试过安装 pecl,比如添加:

RUN pecl install sqlsrv pdo_sqlsrv

但是,这失败了,出现了一系列错误,似乎没有为我指明正确的方向。

我只是在寻找一种简单的方法来在 dockerfile 中或使用 docker run 完成此操作。

有关补充信息,这是我得到的错误:

/tmp/pear/temp/sqlsrv/shared/xplat.h:30:17: fatal error: sql.h: No such file or directory
 #include <sql.h>
                 ^
compilation terminated.
Makefile:194: recipe for target 'conn.lo' failed
make: *** [conn.lo] Error 1
ERROR: `make' failed
The command '/bin/sh -c pecl install sqlsrv pdo_sqlsrv     && docker-php-ext-enable pdo_sqlsrv' returned a non-zero code: 1

谢谢大家

【问题讨论】:

  • 你先做了RUN docker-php-ext-install pdo吗?
  • 我试过了,是的,我得到了同样的错误,请参阅编辑过的主帖,我已经包含了错误。谢谢。

标签: php sql-server docker pdo


【解决方案1】:

你得到答案了吗?我通过以下步骤完成了它。 (unixodbc-dev 包应该可以帮助您完成 pecl 安装。)

在 Docker 文件中:

RUN apt-get -y install unixodbc-dev
RUN pecl install sqlsrv pdo_sqlsrv

然后你必须在 php.ini 中添加一些更改以启用 sqlserver。

获取 php.ini 的本地副本并添加以下行:

extension=pdo_sqlsrv.so
extension=sqlsrv.so

然后将你本地的 php.ini 复制到 docker 镜像中(我的文件在本地的“config”文件夹中)。

在 Docker 文件中:

COPY config/php.ini /usr/local/etc/php/

【讨论】:

  • 我完全按照您的指示进行操作,但出现以下错误:Error connecting to SQL Server: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712。我需要在某处下载并集成文件“pdo_sqlsrv.so”和“sqlsrv.so”吗?
【解决方案2】:

我为此目的创建了一个 docker 文件:

FROM php:7.3-apache
ENV ACCEPT_EULA=Y
RUN apt-get update && apt-get install -y gnupg2
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
RUN curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list 
RUN apt-get update 
RUN ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql17 unixodbc-dev 
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-enable sqlsrv pdo_sqlsrv

COPY . /var/www/html/

享受吧!

【讨论】:

  • 完美运行,谢谢。
  • 你怎么没上榜?干得好!
猜你喜欢
  • 2016-09-28
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2022-09-24
  • 1970-01-01
相关资源
最近更新 更多