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

PHP连接SQL Server遇PDO异常:找不到驱动问题求助

排查PHP 7.2连接SQL Server提示"could not find driver"的问题

首先,你同时加载了线程安全(TS)和非线程安全(NTS)版本的驱动DLL,这是最可能的核心问题——PHP只能适配其中一种架构的扩展,混装必然会导致加载失败。咱们一步步拆解排查:

  • 第一步:确认你的PHP是TS还是NTS架构
    打开命令行运行 php -v,看输出里的Thread Safety字段:

    • 显示Thread Safety => enabled,说明是TS版本;
    • 显示Thread Safety => disabled,则是NTS版本。
      也可以创建一个phpinfo.php文件(内容为<?php phpinfo(); ?>),访问后找到Thread Safety项确认。
  • 第二步:清理php.ini的扩展加载配置
    根据第一步确认的架构,只保留对应版本的驱动加载语句,删掉或注释掉另一种架构的配置。比如如果是TS版本,php.ini里应该只留:

    extension=php_sqlsrv_72_ts.dll
    extension=php_pdo_sqlsrv_72_ts.dll
    

    绝对不能同时加载TS和NTS的DLL,这会直接引发扩展加载冲突。

  • 第三步:确认扩展路径配置正确
    检查php.ini里的extension_dir配置,确保它指向你的php/ext目录。Windows系统建议用绝对路径,比如:

    extension_dir = "C:/php/ext"
    

    也可以通过phpinfo()里的Extension Directory项,验证路径是否正确匹配。

  • 第四步:检查驱动与PHP的x86/x64架构匹配
    查看phpinfo()里的Architecture项,确认你的PHP是32位还是64位,下载的SQLSRV驱动必须和这个架构完全一致。比如PHP是64位,就不能用32位的DLL,否则会直接加载失败。

  • 第五步:安装必要的系统依赖
    SQLSRV驱动依赖Microsoft ODBC Driver for SQL Server,PHP 7.2至少需要ODBC 17版本(建议安装最新兼容的稳定版)。如果没装这个ODBC驱动,即使DLL路径正确,也会提示找不到驱动。

  • 第六步:重启服务并验证加载状态
    修改php.ini后,必须重启你的Web服务器(Apache/Nginx/IIS),命令行环境也要重新打开终端。之后运行 php -m,查看输出里是否有sqlsrv和pdo_sqlsrv模块;或者访问phpinfo.php,查找这两个模块的信息,确认是否加载成功。

如果以上步骤都排查后仍有问题,可以把php -v的完整输出、phpinfo里的Thread Safety和Architecture信息贴出来,方便进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:55:32