XAMPP3.3.0(PHP8.1.10)调用sqlsrv_connect()未定义函数报错求助
环境信息
- XAMPP 3.3.0(内置PHP 8.1.10)
- Microsoft SQL Server Management Studio 18
报错内容
Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\xampp\htdocs\treasureDoc\php\otentifikasi.php:5 Stack trace: #0 C:\xampp\htdocs\treasureDoc\index.html(45): otentifikasi('', '') #1 {main} thrown in C:\xampp\htdocs\treasureDoc\php\otentifikasi.php on line 5
已尝试操作
- 下载PHP SQL Server驱动并解压至
c:\xampp\php\ext目录 - 安装ODBC Driver 18 for SQL Server
- 在
php.ini中添加extension=php_sqlsrv_81_ts.dll和extension=php_pdo_sqlsrv_81_ts.dll - 尝试过Stack Overflow相关问题的所有方案
排查与解决方案
确认驱动版本与PHP架构匹配
创建phpinfo.php文件写入<?php phpinfo(); ?>,访问后查看Architecture(PHP架构,32/64位)和Thread Safety(线程安全状态),确保下载的驱动是对应架构的TS/NTS版本,二者必须完全匹配。验证修改的
php.ini是Apache加载的版本
通过phpinfo()查看Loaded Configuration File项,确认当前生效的php.ini路径,避免修改了错误的配置文件。检查驱动文件状态
到c:\xampp\php\ext目录确认php_sqlsrv_81_ts.dll和php_pdo_sqlsrv_81_ts.dll存在且未损坏,右键查看文件属性,取消可能存在的“锁定”或“未信任”标记。彻底重启Apache服务
修改php.ini后必须在XAMPP控制面板中先停止Apache,等待几秒后再启动,确保配置完全生效,仅重载配置可能不生效。尝试降级ODBC驱动版本
ODBC Driver 18部分环境下兼容性不佳,可尝试安装ODBC Driver 17 for SQL Server,旧环境中该版本稳定性更强。检查扩展加载日志
重启Apache后访问phpinfo.php搜索sqlsrv,若未找到对应模块,查看phpinfo()中error_log路径下的日志文件,根据加载错误信息针对性排查(比如依赖缺失、文件路径错误等)。
内容的提问来源于stack exchange,提问作者Martin

