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

Debian(Docker)环境下PHP SQLSRV驱动安装失败求助

解决Docker中pecl安装sqlsrv时libltdl.la缺失的问题

问题分析

报错核心是/usr/lib/x86_64-linux-gnu/libltdl.la文件不存在,导致链接阶段失败。这个文件属于libltdl-dev包,是libtool的运行时依赖库。近期unixodbc-dev的包更新可能移除了对该依赖的默认引入,所以即使安装了unixodbc-dev,也会缺失这个文件。

解决方案

1. 补充安装libltdl-dev

在安装unixodbc-dev的步骤中,添加libltdl-dev到安装列表。修改Dockerfile中安装SqlServer驱动的RUN指令:

# Install SqlServer PHP driver
RUN cat /etc/os-release \
  && apt-get update \
  && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
  && curl https://packages.microsoft.com/config/debian/11/prod.list \
      > /etc/apt/sources.list.d/mssql-release.list \
  && apt-get install -y --no-install-recommends apt-transport-https \
  && apt-get update \
  && ACCEPT_EULA=Y apt-get -y --no-install-recommends install unixodbc-dev msodbcsql17 libltdl-dev

2. 可选:指定sqlsrv版本安装

如果最新版本的sqlsrv扩展存在兼容性问题,可以尝试指定稳定版本安装,比如5.10.0:

# Install PHP extensions
RUN docker-php-ext-install intl pdo_mysql zip bcmath mbstring exif pcntl bcmath gd \
  && pecl install sqlsrv-5.10.0 pdo_sqlsrv-5.10.0 \
  && docker-php-ext-enable sqlsrv pdo_sqlsrv

3. 调整apt clean的时机

避免在安装SqlServer驱动之前执行apt-get clean和rm -rf /var/lib/apt/lists/*,否则后续apt update会重新下载列表,可能导致依赖安装不完整。确保清理步骤在所有依赖安装完成后执行。

修改后的完整关键片段

# Install dependecies
RUN apt-get update --fix-missing \
  && apt-get -y install cron git libicu-dev libonig-dev libzip-dev gnupg \
  unzip locales libpng-dev libxml2-dev nano wget software-properties-common supervisor

# Install Java 8
RUN mkdir -p /usr/share/man/man1 \
  && wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add - \
  && add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ \
  && apt-get update && apt-get -y install adoptopenjdk-8-hotspot

# Install SqlServer PHP driver
RUN cat /etc/os-release \
  && apt-get update \
  && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
  && curl https://packages.microsoft.com/config/debian/11/prod.list \
      > /etc/apt/sources.list.d/mssql-release.list \
  && apt-get install -y --no-install-recommends apt-transport-https \
  && apt-get update \
  && ACCEPT_EULA=Y apt-get -y --no-install-recommends install unixodbc-dev msodbcsql17 libltdl-dev

# Install PHP extensions
RUN docker-php-ext-install intl pdo_mysql zip bcmath mbstring exif pcntl bcmath gd \
  && pecl install sqlsrv pdo_sqlsrv \
  && docker-php-ext-enable sqlsrv pdo_sqlsrv

# Clean up after all installations
RUN apt-get clean \
  && rm -rf /var/lib/apt/lists/* \
  && locale-gen en_US.UTF-8 \
  && localedef -f UTF-8 -i en_US en_US.UTF-8 \
  && mkdir /var/run/php-fpm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:09