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

如何在本地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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:02:36