PHP 8.5.5 官方已移除对 FreeTDS 的内置绑定支持,pdo_dblib 仅限 Linux/macOS 编译启用,依赖 freetds-dev/devel 包;Windows 不支持;验证用 php -m | grep -i dblib,无输出即未安装;推荐改用官方维护的 sqlsrv 或 PDO+ODBC 方案。

确认系统是否支持pdo_dblib
PHP 8.5.5 官方已移除对 FreeTDS 的内置绑定支持,【Windows 系统无法安装 pdo_dblib 扩展】——该扩展仅限 Linux/macOS 编译启用,且依赖系统级 freetds-dev(Ubuntu/Debian)或 freetds-devel(CentOS/RHEL)包。
运行 php -v 验证确实是 PHP 8.5.5;再执行 php -m | grep -i dblib,若无输出,说明扩展未加载,也未编译进 PHP 二进制中。
Linux 下手动编译安装 pdo_dblib
此操作必须在有 root 权限的终端中进行,且 PHP 源码或开发包已安装(如 php8.5-dev)。
第一步:安装底层依赖
Ubuntu/Debian 执行 apt-get install freetds-dev php8.5-dev autoconf pkg-config;
CentOS/RHEL 执行 yum install freetds-devel php-devel autoconf pkgconfig。
立即学习“PHP免费学习笔记(深入)”;
第二步:进入 PHP 源码 ext/pdo_dblib 目录
若用 apt/yum 安装的 PHP,需先下载对应版本源码包解压,不能直接进 /usr/src/php/ext/pdo_dblib ——多数系统不预装该路径。
第三步:编译并安装
依次执行:phpize → ./configure --with-pdo-dblib=/usr(路径以 pkg-config --modversion freetds 返回的实际安装根为准)→ make && sudo make install。
第四步:启用扩展
编辑 php.ini,在末尾添加 extension=pdo_dblib.so;保存后重启 Web 服务或 CLI 环境。
替代方案:改用 sqlsrv 或 odbc
若目标是连接 Microsoft SQL Server,【sqlsrv 扩展比 pdo_dblib 更稳定、性能更高,且官方持续维护】——微软已为 PHP 8.5 提供 sqlsrv 5.12+ 版本,支持 Windows 和 Linux(需 Microsoft ODBC Driver 18 for SQL Server)。
方法一:Linux 安装 sqlsrv
按微软官方文档步骤安装 ODBC Driver 18 → 运行 pecl install sqlsrv → php.ini 加 extension=sqlsrv.so。
方法二:用 PDO + ODBC 绕过 dblib
安装 unixODBC 和 msodbcsql18 → 配置 /etc/odbcinst.ini 指向驱动 → DSN 写成 odbc:Driver={ODBC Driver 18 for SQL Server};Server=xxx;Database=xxx; → new PDO($dsn, $user, $pass) 即可。
注意:PDO 构造时若未传密码,会触发 TypeError;空密码必须显式传 "",不可为 null。



















