PHP 8.1及以上版本配置sqlsrv扩展及解决连接报错问题
PHP 8.1.14 sqlsrv_connect() 未定义错误解决指南
一、确认扩展版本匹配
- 先核实PHP核心参数:创建
phpinfo.php文件,内容如下:
访问该文件,查看<?php phpinfo(); ?>Thread Safety(线程安全,Enabled为TS,Disabled为NTS)和Architecture(架构,x64/x86)信息。 - 你下载的
php_pdo_sqlsrv_81_ts_x64.dll和php_sqlsrv_81_ts_x64.dll必须完全匹配PHP的版本(8.1)、线程安全类型(TS)和架构(x64),参数不匹配会导致扩展无法加载。
二、修正php.ini配置
- 检查扩展路径:打开
C:\xampp\php\php.ini,确认extension_dir指向正确的扩展目录,示例:extension_dir = "C:\xampp\php\ext" - 简化扩展配置:无需写完整的dll文件名,将你添加的两行配置替换为:
确保配置行前没有注释符号extension=sqlsrv extension=pdo_sqlsrv;,且放在Dynamic Extensions段落内。
三、重启Web服务
修改php.ini后,必须重启XAMPP中的Apache服务,否则配置不会生效。
四、验证扩展加载状态
- 重新访问
phpinfo.php,搜索sqlsrv和pdo_sqlsrv,若能看到对应的扩展信息,说明加载成功。 - 或用命令行验证:打开CMD,进入
C:\xampp\php目录,执行:
查看输出列表中是否包含php -msqlsrv和pdo_sqlsrv。
五、代码细节修正
- 连接字符串格式:你的
$serverName存在多余空格,需修正为无空格的格式,示例:$serverName = "your_server_name,your_port_number"; // 例如 "localhost,1433" - 确保
Database、UID、PWD的取值无多余符号,与SQL Server的配置完全一致。
六、依赖组件检查
sqlsrv扩展依赖ODBC Driver 17 for SQL Server,必须安装该驱动才能正常连接SQL Server。
内容的提问来源于stack exchange,提问作者rck
相关产品推荐
相关产品推荐

