如何在本地PC上正确为PHP 8.2安装sqlsrv扩展?求助
解决PHP 8.2.20中sqlsrv扩展未加载及连接失败问题
问题描述
- PHP版本:8.2.20
- 已配置
php.ini-development如下:extension_dir = "C:\php\ext" extension=php_pdo_sqlsrv_82_ts_x64.dll extension=php_sqlsrv_82_ts_x64.dll - 异常现象:
phpinfo()中无sqlsrv相关信息,运行数据库连接代码时触发错误:Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\Users\ivakov.av\Desktop\Php_Projects\sigur.php:15 - 连接代码:
$serverName = ""; $connectionInfo = array( "Database" => "", "UID" => "", "PWD" => "" ); $conn = sqlsrv_connect($serverName, $connectionInfo); if ($conn === false) { echo "Connection failed: " . print_r(sqlsrv_errors(), true); exit; }
排查与解决步骤
1. 确认加载的php.ini文件正确性
运行php --ini命令,查看Loaded Configuration File对应的路径,确认你修改的php.ini-development是否为当前PHP加载的配置文件。若不是,需将修改后的配置复制到加载的配置文件中,或直接将php.ini-development重命名为php.ini。
2. 验证扩展文件兼容性与完整性
- 确认下载的sqlsrv扩展是PHP8.2、线程安全(TS)、x64架构对应的版本,且文件已放置在
C:\php\ext目录下。 - 若怀疑文件损坏,重新下载对应版本的扩展包替换现有文件。
3. 安装依赖的ODBC驱动
sqlsrv扩展依赖Microsoft ODBC Driver for SQL Server,需安装17或18版本的驱动,安装完成后重启PHP运行环境(Web服务器或CLI会话)。
4. 匹配PHP线程安全模式
运行php -v,查看输出中Thread Safety状态:
- 若显示
enabled(TS),则当前使用的TS版扩展正确; - 若显示
disabled(NTS),需更换为NTS版本的sqlsrv扩展(文件名包含nts标识)。
5. 重启PHP运行环境
修改php.ini后,必须重启Web服务器(如Apache、IIS)或CLI会话,配置才会生效。
6. 查看PHP错误日志定位问题
在phpinfo()中找到错误日志路径,查看日志里的扩展加载失败原因(如依赖缺失、文件不存在等),针对性解决问题。
验证方法
- 重启环境后,运行
php -m命令,检查输出是否包含sqlsrv和pdo_sqlsrv;或刷新phpinfo()页面,搜索sqlsrv相关条目确认扩展已加载。 - 扩展加载成功后,填写正确的
$serverName、数据库名、账号密码,重新运行连接代码。
内容的提问来源于stack exchange,提问作者user26557645
相关产品推荐
相关产品推荐

