PHP 8.2.1无法加载SQL Server驱动问题求助
解决PHP 8.2.1加载SQL Server驱动失败的问题
核心问题:扩展版本与PHP版本不匹配
你用的是PHP 8.2.1,但启用的php_pdo_sqlsrv_81_nts_x64.dll和php_sqlsrv_81_nts_x64.dll是对应PHP 8.1的扩展,版本不兼容直接导致加载失败。下载匹配版本的扩展
- 从
phpinfo()确认两个关键参数:Thread Safety为Disabled(对应nts版本),Architecture为x64 - 下载PHP 8.2 x64 nts版本的sqlsrv扩展,将解压后的
php_pdo_sqlsrv_82_nts_x64.dll和php_sqlsrv_82_nts_x64.dll放到C:\Windows\PHP\ext目录
- 从
修正php.ini配置
打开C:\Windows\PHP\php.ini,把原来的扩展行替换成:extension=php_pdo_sqlsrv_82_nts_x64.dll extension=php_sqlsrv_82_nts_x64.dll或者PHP 7.4+可以简化写法:
extension=pdo_sqlsrv extension=sqlsrv同时确认
extension_dir = "C:\Windows\PHP\ext"配置正确,路径用双引号包裹避免空格问题。安装依赖组件
SQL Server扩展必须依赖Microsoft ODBC Driver 17 for SQL Server(x64版本),未安装的话先完成安装,之后重启Web服务器(IIS、Apache等)或者PHP-FPM。验证加载结果
重启服务后刷新phpinfo(),搜索sqlsrv和pdo_sqlsrv,能看到相关模块信息就说明加载成功。也可以用代码验证PDO驱动:print_r(PDO::getAvailableDrivers());输出里包含
sqlsrv即为正常。额外排查点
- 确认Web服务器使用的php.ini和
phpinfo()显示的Loaded Configuration File是同一个,部分服务器可能加载多个配置文件 - 开启PHP错误日志(在php.ini中设置
error_log路径),查看扩展加载失败的具体报错,能更快定位问题
- 确认Web服务器使用的php.ini和
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

