PHP 8.x在XAMPP中默认不支持SQL Server驱动,需手动下载匹配版本的sqlsrv和pdo_sqlsrv DLL文件,启用扩展并安装Microsoft ODBC Driver for SQL Server才能正常使用。

PHP 8.x 在 XAMPP 中默认不支持 SQL Server 驱动
直接调用 sqlsrv_connect() 或 pdo_sqlsrv 会报错:Call to undefined function sqlsrv_connect()。XAMPP 自带的 PHP(尤其 8.0+)不包含 Microsoft 官方提供的 sqlsrv 和 pdo_sqlsrv 扩展,必须手动下载匹配版本的 DLL 并启用。
必须严格匹配 PHP 版本、线程安全(TS/NTS)和架构(x64/x86)
下错一个参数,扩展就加载失败,phpinfo() 里看不到 sqlsrv 模块,错误日志里可能只显示 PHP Warning: PHP Startup: Unable to load dynamic library 'sqlsrv'。
- 查当前 PHP:运行
php -v和php -i | findstr "Thread Safe"(Windows 命令行),确认是Thread Safe (TS)还是Non-Thread Safe (NTS);XAMPP 默认是 TS - 查架构:
php -i | findstr "Architecture",XAMPP 多为x64 - 去 GitHub msphpsql 发布页 下载对应包,例如 PHP 8.2 TS x64 就选
php_sqlsrv_82_ts_x64.zip - 解压后把
php_sqlsrv_82_ts_x64.dll和php_pdo_sqlsrv_82_ts_x64.dll放进 XAMPP 的php\ext\目录
在 php.ini 中正确启用扩展且顺序不能错
扩展依赖 php_mbstring.dll 和 php_opcache.dll,如果它们没加载或位置靠后,sqlsrv 会静默失败。
- 打开
php\php.ini(不是apache\bin\php.ini),搜索;extension=mbstring,去掉分号启用 - 在
mbstring启用之后、其他扩展之前,添加两行:
extension=php_sqlsrv_82_ts_x64.dll extension=php_pdo_sqlsrv_82_ts_x64.dll
注意:不要加 php_ 前缀在 extension= 后面,也不要写绝对路径 —— XAMPP 只认相对 ext/ 的文件名。
连接前必须安装 Microsoft ODBC Driver for SQL Server
sqlsrv 扩展底层依赖 Windows 系统级 ODBC 驱动,只装 PHP 扩展是连不上任何 SQL Server 实例的。不装这个,sqlsrv_connect() 会返回 false,sqlsrv_errors() 显示 SQLSTATE = IMSSP, Code = -49, Message = This extension requires the Microsoft ODBC Driver for SQL Server。
- 下载地址:Microsoft 官方 ODBC Driver 页面
- 推荐安装最新版(如
ODBC Driver 18 for SQL Server),支持 TLS 1.2 和 Azure AD 认证 - 安装时勾选“Configure ODBC DSNs”可选,但驱动本身必须装;装完无需重启,但需重启 Apache
验证是否生效:重启 Apache 后访问 localhost/dashboard/phpinfo.php,搜索 sqlsrv,看到模块信息即成功;再执行 php -m | findstr sqlsrv 应输出两行。
真正容易被跳过的点是 ODBC 驱动 —— 很多人卡在连接失败却反复检查 PHP 配置,其实系统根本没准备好通信底座。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











