PHP 7.4环境下无法安装sqlsrv驱动,求可行解决方案
解决PHP 7.4下安装sqlsrv驱动的问题
因为最新版的sqlsrv PECL包已要求PHP 8.1+,你需要指定安装兼容PHP 7.4的旧版本驱动,具体解决方案如下:
修改后的Dockerfile
FROM php:7.4-cli as php RUN apt-get update -y RUN apt-get install -y unzip libpq-dev libcurl4-gnutls-dev gnupg2 zlib1g-dev libpng-dev libnss3-dev libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon-x11-0 libxcomposite-dev libxdamage1 libxfixes-dev libxrandr2 libgbm-dev libpangocairo-1.0-0 libcairo2 libasound2 RUN docker-php-ext-install pdo pdo_mysql bcmath gd exif RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/ubuntu/16.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 # 指定安装兼容PHP7.4的sqlsrv版本 RUN pecl install sqlsrv-5.11.1 RUN pecl install pdo_sqlsrv-5.11.1 RUN docker-php-ext-enable sqlsrv pdo_sqlsrv RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - RUN apt-get install -y nodejs RUN npm install COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www COPY . . ENV PORT=9000 ENTRYPOINT [ "Docker/entrypoint.sh" ]
关键修改说明
- 将原Dockerfile中无版本的
pecl install sqlsrv/pecl install pdo_sqlsrv,改为指定sqlsrv-5.11.1和pdo_sqlsrv-5.11.1,这两个版本是官方支持PHP 7.4的最后稳定版本。 - 取消注释
docker-php-ext-enable sqlsrv pdo_sqlsrv,确保驱动安装后被正确启用。
补充提示
- 若需验证其他兼容版本,可在容器内执行
pecl search sqlsrv查看历史版本列表,选择标注支持PHP 7.4的版本即可。 - 当前安装的
msodbcsql17与5.x版本的sqlsrv驱动完全兼容,无需调整。
内容的提问来源于stack exchange,提问作者dev_sk
相关产品推荐
相关产品推荐

