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

PHP PDO连接MSSQL提示‘could not find driver’故障求助

解决PHP PDO连接MSSQL报"could not find driver"的问题

我之前踩过一模一样的坑,给你梳理几个关键的排查和解决步骤,应该能搞定:

1. 确保驱动和PHP环境完全匹配

这是最容易出错的点!你下载的SQLSRV驱动必须和你的PHP版本、线程安全(TS/NTS)、系统位数(32/64位)完全对应:

  • 比如你用的是PHP 8.0 64位线程安全版,就得下载对应版本的php_sqlsrv_80_ts_x64.dll和php_pdo_sqlsrv_80_ts_x64.dll
  • 别乱下版本,比如SQLSRV 5.x支持PHP7.2-8.0,SQLSRV 6.x支持PHP8.0-8.2,一定要精准对应

2. 安装基础ODBC驱动

PHP的SQLSRV驱动依赖Microsoft ODBC Driver for SQL Server,光装PHP驱动没用!得先安装对应系统的ODBC驱动(比如ODBC 17或18版本),这是底层依赖,必须先搞定。

3. 正确配置php.ini并重启服务

  • 把下载的php_sqlsrv.dll和php_pdo_sqlsrv.dll放到PHP的ext目录下
  • 打开php.ini,添加或取消注释这两行(如果驱动不在默认ext目录,要写绝对路径):
    extension=php_sqlsrv.dll
    extension=php_pdo_sqlsrv.dll
    
  • 重点:一定要重启你的Web服务器(Apache/Nginx)或者PHP-FPM,CLI模式的话要重启命令行窗口,不然配置根本不会生效!

4. 验证驱动是否成功加载

写一个简单的测试脚本phpinfo.php:

<?php phpinfo(); ?>

访问后搜索pdo_sqlsrv和sqlsrv,如果能找到对应的模块信息,说明驱动加载成功;如果没有,回到前面步骤排查版本匹配、php.ini配置和服务器重启的问题。

或者用CLI命令快速验证:

php -m

看输出里有没有pdo_sqlsrv和sqlsrv这两个模块。

5. ODBC方式的正确姿势

如果你尝试ODBC连接,要先配置ODBC数据源:

  • Windows下打开ODBC数据源管理器(注意32位和64位的区别:64位是odbcad32.exe,32位是C:\Windows\SysWOW64\odbcad32.exe)
  • 创建系统DSN,选择SQL Server驱动,填写服务器地址、数据库名,测试连接确保能通
  • 然后PDO连接字符串要写成:
    try {
        $conn = new PDO("odbc:DSN=你的DSN名称", "用户名", "密码");
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
    }
    

6. 检查SQLSRV直接连接的字符串格式

用SQLSRV原生驱动连接的话,正确的PDO连接字符串格式是:

try {
    $conn = new PDO("sqlsrv:Server=你的服务器地址;Database=你的数据库名", "用户名", "密码");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功!";
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

如果是本地SQL Server Express版本,服务器地址可以写成.\SQLEXPRESS。

按照这些步骤一步步排查,应该能解决找不到驱动的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:01:30