1. 环境准备与前置条件
1.1 Windows 与 PHP 版本匹配
在 Windows 环境下实现 PHP 连接 SQL Server,首先要确认 Windows 的版本、以及所使用的 PHP 版本是否与 SQL Server 驱动(sqlsrv/pdo_sqlsrv)兼容。不同 PHP 主版本对应的驱动版本不同,请始终从微软官方获取与当前 PHP 版本对应的驱动二进制文件,避免因为版本不匹配导致扩展加载失败。
关键要点:紧密关注 PHP 版本和驱动版本的对应关系,确保下载的扩展 DLL 与系统位数(x86/x64)和线程安全(ZTS/Non-ZTS)一致。
1.2 需要的组件与驱动
实现 Windows 下的 PHP 与 SQL Server 连接,需要安装 Microsoft 提供的 sqlsrv 和 pdo_sqlsrv 两个扩展,并确保系统中具备相应的 Visual C++ 运行时组件以便 DLL 能正常加载。
此外,SQL Server 需要对外暴露端口(默认 1433),以及允许相应的网络访问和用户认证(SQL Server 身份验证或 Windows 身份验证)。在生产环境中,请考虑启用加密传输与证书配置,以提升安全性。
2. 安装与配置 PHP 环境
2.1 下载并安装 SQLSRV 与 PDO_SQLSRV 扩展
在官方下载页面获取与你的 PHP 版本相匹配的 sqlsrv 与 pdo_sqlsrv 二进制 DLL,通常位于 Microsoft Drivers for PHP for SQL Server 的下载区。下载后将 php_sqlsrv.dll 与 php_pdo_sqlsrv.dll 放入 PHP 的 ext 目录(如 C:\php\ext),以便后续在 php.ini 中加载。

要点:确保下载的 DLL 与系统位数、PHP 版本和线程安全类型匹配,否则会在加载阶段抛出“找不到入口点”或“模块不能加载”的错误。
2.2 配置 php.ini 与环境变量
在 php.ini 中启用这两个扩展,确保 Windows 能正确加载。典型配置如下:extension=php_sqlsrv.dll、extension=php_pdo_sqlsrv.dll,并保存重启 Web 服务器。
同时,确保 PHP 的 ext 目录在加载路径中,如果遇到找不到依赖的情况,检查系统 PATH 是否包含 PHP 的根目录及其扩展依赖的运行时库路径。
2.3 重启与验证扩展加载
修改完成后,重启 IIS、Apache 或其他 Web 服务器,并通过 phpinfo() 或 php -m 验证扩展是否已成功加载。
验证要点:在浏览器访问 phpinfo(),搜索 sqlsrv 和 pdo_sqlsrv,若显示加载信息,表示扩展已就绪;或者在命令行执行 php -m | find "sqlsrv" 来确认。
3. 实战步骤:Windows 下连接 SQL Server 的完整配置
3.1 使用 sqlsrv_connect 的基本连接
通过 sqlsrv_connect 可以使用数组形式的连接信息,推荐初始使用 sqlsrv_connect 进行简单连接测试,确保基本链路正常。
核心要点包括服务器地址、数据库名称、以及身份认证信息的传递:Server、Database、UID、PWD 等字段。
"TestDB","UID" => "dbuser","PWD" => "dbpassword","TrustServerCertificate" => true // 测试环境可设为 true,正式环境建议开启证书信任
);$conn = sqlsrv_connect($serverName, $connectionInfo);if ($conn) {echo "连接成功(sqlsrv_connect)";
} else {echo "连接失败: ";print_r(sqlsrv_errors(), true);
}
?>
3.2 使用 PDO_SQLSRV 的连接方式
若偏好 PDO 方式,可以通过 PDO_SQLSRV 驱动建立连接,PDO 提供统一的异常处理和更丰富的对象式 API,便于后续数据操作和事务控制。
PDO::ERRMODE_EXCEPTION,PDO::ATTR_TIMEOUT => 5]);echo "连接成功(PDO)";
} catch (PDOException $e) {echo "连接失败: " . $e->getMessage();
}
?>
无论使用 sqlsrv_connect 还是 PDO_SQLSRV,在正式环境中建议开启错误处理并记录 sqlsrv_errors 或 PDO 异常信息,以便定位连接失败的原因,如认证失败、数据库不存在、网络连通性问题、端口被防火墙阻断等。
3.3 常见错误与排查方法
常见问题包括扩展未正确加载、DLL 版本不匹配、服务器名称解析失败、以及 Windows 身份验证的权限问题。排查顺序应从扩展加载、DLL 版本、服务器可达性、以及认证方式逐步排查。
排查要点总结:查看 PHP 的错误日志、利用 ping/Port 测试网络连通性、确认 SQL Server 账户权限与数据库存在性、以及验证防火墙和端口配置。


