Windows10下PHP7.4无法加载sqlsrv扩展求助及报错排查
我之前升级PHP版本时也碰到过一模一样的报错,折腾了好一阵才搞定,给你列几个最可能的原因和排查步骤:
检查扩展文件名与php.ini配置是否匹配
从报错信息看,PHP尝试加载的是php_sqlsrv_74_nts_x64(不带.dll)和自动补全前缀后的php_php_sqlsrv_74_nts_x64.dll,这明显有问题。你需要:- 打开
C:\Program Files (x86)\PHP\v7.4\ext\目录,确认实际的扩展文件名(应该是php_sqlsrv_74_nts_x64.dll和php_pdo_sqlsrv_74_nts_x64.dll) - 打开php.ini,找到扩展配置行,改成
extension=php_sqlsrv_74_nts_x64(注意不要多写php_前缀,也不需要加.dll,PHP会自动补全);或者更简单的方式:如果你的扩展文件名是标准的php_sqlsrv.dll(部分版本下载后可重命名),直接写extension=sqlsrv即可。
- 打开
确认扩展版本完全匹配PHP环境
微软的sqlsrv扩展对版本要求非常严格,必须满足:- 对应PHP 7.4版本
- 与PHP的线程安全(TS/NTS)一致:你用的是NTS(非线程安全)版本,所以必须下载NTS版本的扩展
- 与PHP的位数(x64/x86)一致:你的PHP是x64的,扩展也必须是x64版本
下载时一定要选对应组合的压缩包,别下错了。
检查VC++运行库是否安装
PHP 7.4是基于VC15编译的,必须安装Microsoft Visual C++ 2017 Redistributable(x64版本)。如果没装或者版本不对,扩展会因为依赖缺失无法加载。验证ODBC Driver 17的位数
你的PHP是x64的,ODBC Driver 17也必须安装x64版本,不能装x86的。可以打开ODBC数据源管理器(64位),检查是否能看到「ODBC Driver 17 for SQL Server」。确认扩展文件确实在ext目录中
有时候下载后解压漏了文件,或者放错了目录,一定要手动去C:\Program Files (x86)\PHP\v7.4\ext\里确认php_sqlsrv_74_nts_x64.dll存在,而且系统有读取这个文件的权限。
最后,修改完配置后重启你的Web服务器(比如IIS、Apache),然后打开命令行运行php -m,看看输出里有没有sqlsrv和pdo_sqlsrv;或者创建一个phpinfo.php文件,访问它查看扩展是否加载成功。
内容的提问来源于stack exchange,提问作者David

