PHP 5.6.35启用SQL Server驱动后连接数据库提示需ODBC Driver 11
解决PHP 5.6连接SQL Server时的ODBC Driver 11缺失错误
嘿,这个问题我帮好几个开发者排查过,别着急!你已经成功启用了php_pdo_sqlsrv_56_nts.dll和php_sqlsrv_56_nts.dll扩展,这步没问题,但SQL Server的PHP驱动必须依赖对应的ODBC驱动才能正常工作,你看到的错误就是系统里缺少Microsoft ODBC Driver 11导致的。
咱们一步步来解决:
- 先核对位数匹配! 你用的是非线程安全(NTS)的PHP 5.6,一定要确保下载的ODBC Driver 11和PHP是同位数的——PHP是32位就装32位ODBC驱动,64位PHP就装64位的,这是最容易踩的坑,很多人就是因为位数不匹配导致装了也没用。
- 安装ODBC Driver 11 for SQL Server:找对应你Windows系统版本的安装包,安装过程一路默认下一步就行,不需要额外配置。
- 重启你的Web服务器:不管是Apache还是IIS,装完ODBC驱动后必须重启服务,这样PHP才能识别到新安装的底层驱动。
- 写个小脚本验证连接:比如这个简单的PDO测试脚本:
<?php try { $dsn = "sqlsrv:Server=你的SQL服务器地址;Database=要连接的库名"; $conn = new PDO($dsn, "用户名", "密码"); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "数据库连接成功啦!"; } catch(PDOException $e) { echo "连接失败: " . $e->getMessage(); } ?>
如果还是报错,打开ODBC数据源管理器(控制面板里搜“ODBC”就能找到),切换到“驱动”标签,看看有没有“Microsoft ODBC Driver 11 for SQL Server”或者“SQL Server Native Client 11.0”,要是没有说明安装没成功,重新下载对应位数和系统版本的安装包再试一次。
另外要注意,PHP 5.6对应的SQL Server驱动只能用ODBC Driver 11,别尝试用更高版本的ODBC驱动替代,版本不兼容反而会出问题。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

