如何在Docker php映像中安装pdo_odbc

时间:2020-01-27 06:18:47

标签: php docker

我正在尝试使用PDO和Laravel连接到mssql,但我认为安装驱动程序时遇到了问题。没有构建错误,但是我到处都在寻找解决方案,它们会产生错误或无法正常工作。尝试建立与mssql服务器的连接时,出现此错误:

Illuminate\Database\QueryException: could not find driver (SQL: SELECT * FROM SAMPLE_VIEW_SM1 WHERE STUDENTS_ID=1) in file /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664

Caused by
PDOException: could not find driver in file /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php on line 70

这是我的dockerfile:

FROM php:7.3-fpm-buster

ENV DEBIAN_FRONTEND=noninteractive

RUN rm /etc/apt/preferences.d/no-debian-php

RUN apt-get update -y && apt-get install -y \
    openssl \
    zip \
    unzip \
    git \
    curl \
    freetds-common \
    freetds-bin \
    unixodbc \
    unixodbc-dev \
    php-smbclient \
    php7.3-sybase

RUN docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixodbc,/usr
RUN docker-php-ext-install pdo_odbc
RUN docker-php-ext-enable pdo_odbc
# Install node and dependencies

RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs

RUN mkdir /cache
WORKDIR /cache

COPY package.json ./
COPY package-lock.json ./
RUN npm install

# Set file size limits

RUN echo "post_max_size=50M" >> /usr/local/etc/php/php.ini-production
RUN echo "upload_max_filesize=10M" >> /usr/local/etc/php/php.ini-production
RUN echo "memory_limit=6400M" >> /usr/local/etc/php/php.ini-production

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

# Create application's working directory
WORKDIR /var/www
COPY . .

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN composer install

RUN cp -r ./vendor/. /cache/vendor/

RUN chmod -R a+rwX /var/www/storage

RUN chmod -R +x ./entrypoint.sh

EXPOSE 9000

ENTRYPOINT [ "./entrypoint.sh" ]

1 个答案:

答案 0 :(得分:0)

我刚刚发布了一个与此相关的解决方案,希望对您有用,您好。

https://stackoverflow.com/a/68536444/5639865