PHP8.3.3的SQLSRV驱动无法加载,求排查方案及兼容性验证
兼容性确认
SQLSRV v5.12完全兼容PHP 8.3.x(包括8.3.3),微软官方驱动的版本说明明确标注了对PHP 8.3的支持,你选择的php_sqlsrv_83_nts_x64.dll也匹配正确的架构(非线程安全+64位),版本层面不存在兼容问题。
扩展加载问题排查步骤
- 确认扩展启用指令已添加:检查
php.ini中是否存在extension=php_sqlsrv_83_nts_x64.dll(或PHP 7.4+支持的简化写法extension=sqlsrv),仅把DLL放入ext目录不启用指令,扩展不会被加载。 - 核对线程模式匹配:通过
phpinfo()的「Thread Safety」项确认当前PHP环境为Disabled(非线程安全,即NTS),如果显示Enabled(线程安全,TS),则需要更换对应TS版本的SQLSRV驱动DLL。 - 替换扩展目录为绝对路径:IIS环境下相对路径
./ext可能存在解析问题,将extension_dir改为绝对路径,比如extension_dir="C:\Program Files\PHP\ext"(替换为你实际的ext目录路径)。 - 查看PHP错误日志:在
php.ini中开启错误日志:
重启IIS后访问log_errors=On error_log="C:\Program Files\PHP\php_errors.log"phpinfo(),查看日志中是否存在SQLSRV扩展加载失败的具体报错(比如依赖缺失、DLL损坏等)。 - 检查VC++运行库:PHP 8.3依赖VC16版本的Visual C++ Redistributable,确保已安装最新的64位Visual C++ 2019 Redistributable,缺失该运行库会导致驱动DLL无法加载。
- 命令行验证加载情况:打开命令行,切换到PHP安装目录,执行
php -m,查看输出列表中是否包含sqlsrv。如果命令行能加载但IIS不行,说明IIS的PHP配置未指向正确的php.ini,或应用池架构不匹配。 - 检查IIS应用池架构:在IIS管理器中找到对应网站的应用池,右键选择「高级设置」,确认「启用32位应用程序」为
False,匹配你使用的64位PHP和驱动。
内容的提问来源于stack exchange,提问作者arresteddevelopment
相关产品推荐
相关产品推荐

