You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

清理Docker后构建失败:pecl安装sqlsrv报错如何解决?

解决pecl install sqlsrv构建失败的方案

问题根源

删除/var/lib/docker后,所有Docker缓存、基础镜像依赖被彻底清空,重新构建时缺失sqlsrv扩展编译所需的底层系统依赖,导致pecl安装报错。

修复步骤

1. 补全Dockerfile中的系统依赖

sqlsrv扩展编译依赖unixODBC开发库,根据你的基础镜像类型添加对应安装命令:

  • Debian/Ubuntu 镜像:
RUN apt-get update && apt-get install -y --no-install-recommends \
    unixodbc-dev \
    && rm -rf /var/lib/apt/lists/*
  • Alpine 镜像:
RUN apk add --no-cache \
    unixodbc-dev \
    g++ \
    make

2. 确保PHP开发包已安装

pecl编译PHP扩展必须依赖PHP开发文件,Dockerfile里要加上:

# Debian/Ubuntu 示例
RUN apt-get update && apt-get install -y --no-install-recommends php-dev \
    && rm -rf /var/lib/apt/lists/*

3. 指定sqlsrv稳定版本安装

避免新版本兼容性问题,直接指定适配PHP7.4的稳定版本:

RUN pecl install sqlsrv-5.10.1 pdo_sqlsrv-5.10.1

4. 手动安装Microsoft ODBC驱动(可选)

如果上述步骤仍失败,添加微软官方源安装ODBC驱动:

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 \
    && ACCEPT_EULA=Y apt-get install -y msodbcsql17 \
    && rm -rf /var/lib/apt/lists/*

5. 彻底清理缓存后重新构建

执行以下命令清空残留缓存,再重新构建:

docker-compose down -v
docker system prune -af
docker-compose up -d --build

验证成功

容器启动后,进入容器执行php -m | grep sqlsrv,能看到sqlsrv和pdo_sqlsrv两个模块就说明安装成功。

内容的提问来源于stack exchange,提问作者tempra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:23:22