如何在php docker容器上安装/启用pdo odbc驱动程序?

如何在php docker容器上安装/启用pdo odbc驱动程序?,php,docker,pdo,odbc,Php,Docker,Pdo,Odbc,我目前无法为我的php应用程序编写Dockerfile。 我的Dockerfile可以工作,但缺少连接到MS SQL Server数据库所需的pdo odbc驱动程序。以下是我当前的Dockerfile: FROM php:apache RUN apt-get install && \ apt-get update && \ apt-get install tdsodbc unixodbc unixodbc-dev -y && \

我目前无法为我的php应用程序编写Dockerfile。 我的Dockerfile可以工作,但缺少连接到MS SQL Server数据库所需的pdo odbc驱动程序。以下是我当前的Dockerfile:

FROM php:apache
RUN apt-get install && \
    apt-get update && \
    apt-get install tdsodbc unixodbc unixodbc-dev -y && \
    docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr && \
    docker-php-ext-enable pdo_odbc && \
    a2enmod rewrite && \
    service apache2 restart && \
    sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf && \
    sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf && \
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" && \
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /usr/local/bin/composer
COPY php.ini /usr/local/etc/php/
COPY . /var/www/html/
脚本在我尝试启用扩展的第6行崩溃:

error: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc does not exist

usage: /usr/local/bin/docker-php-ext-enable [options] module-name [module-name ...]
   ie: /usr/local/bin/docker-php-ext-enable gd mysqli
       /usr/local/bin/docker-php-ext-enable pdo pdo_mysql
       /usr/local/bin/docker-php-ext-enable --ini-name 0-apc.ini apcu apc

Possible values for module-name:

opcache.so sodium.so

Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
我还尝试使用docker php ext安装,但仍然没有成功。如何安装或启用此扩展?

根据需要,您可以尝试以下操作:

FROM php
RUN apt-get update && apt-get install -y unixODBC-dev && rm -rf /var/lib/apt/lists/*
RUN set -x \
&& cd /usr/src/php/ext/odbc \
&& phpize \
&& sed -ri 's@^ *test +"\$PHP_.*" *= *"no" *&& *PHP_.*=yes *$@#&@g' configure \
&& ./configure --with-unixODBC=shared,/usr \
&& docker-php-ext-install odbc
根据需要,您可以尝试以下方法:

FROM php
RUN apt-get update && apt-get install -y unixODBC-dev && rm -rf /var/lib/apt/lists/*
RUN set -x \
&& cd /usr/src/php/ext/odbc \
&& phpize \
&& sed -ri 's@^ *test +"\$PHP_.*" *= *"no" *&& *PHP_.*=yes *$@#&@g' configure \
&& ./configure --with-unixODBC=shared,/usr \
&& docker-php-ext-install odbc
这对我很有用:

RUN apt-get install unixodbc unixodbc-dev -y \
 && docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \
 && docker-php-ext-install pdo_odbc
这对我很有用:

RUN apt-get install unixodbc unixodbc-dev -y \
 && docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \
 && docker-php-ext-install pdo_odbc

这个答案是odbc,而OP要求pdo odbc,这是不同的。PHP及其模块名称乱七八糟!反正是向上投票,因为那个链接帮助我解决了我的问题。这个答案是odbc,而OP要求pdo odbc,这是不同的。PHP及其模块名称乱七八糟!反正是向上投票,因为那个链接帮助我解决了我的问题。我尝试了这个,但在构建依赖关系树时出现了这个错误。。。正在读取状态信息。。。E:找不到unixodbc包E:找不到unixodbc包dev命令'/bin/sh-c apt get install unixodbc unixodbc dev-y&&docker php ext configure pdo_odbc--with pdo odbc=unixodbc,/usr&&docker php ext install pdo_odbc'返回一个非零代码:100It在添加RUN“apt get update&&apt get install…我尝试了这个,但在构建依赖关系树时出错。。。正在读取状态信息。。。E:找不到unixodbc包E:找不到unixodbc包dev命令'/bin/sh-c apt get install unixodbc unixodbc dev-y&&docker php ext configure pdo_odbc--with pdo odbc=unixodbc,/usr&&docker php ext install pdo_odbc'返回一个非零代码:100它在添加RUN“apt get update&&apt get install”后工作。。。