PHP连接SQL Server注意事项:ntwdblib.dll版本配置与排错指南

沈亦白
沈亦白
发布时间:2026-10-15 | 2人浏览过
原创

本文总结PHP连接SQL Server过程中的关键配置点,特别是ntwdblib.dll版本对连接稳定性的影响,以及php.ini和SQL Server端的必要设置,旨在帮助开发者快速排除连接错误。

核心注意事项:ntwdblib.dll版本匹配

在Windows环境下使用PHP连接SQL Server,ntwdblib.dll的版本至关重要。版本不匹配是导致连接失败或静默错误的常见原因。以下是不同SQL Server版本对应的dll推荐版本:

  • SQL Server 2000:对应版本 2000.2.8.0(需验证)。
  • SQL Server 2005:对应版本 2000.80.194.0(实验证实有效)。
  • SQL Server 2008:对应版本 2000.80.2039(仅供参考)。

若发现连接异常,首先检查当前使用的ntwdblib.dll属性中的版本信息。默认情况下,PHP安装包中可能附带旧版dll,建议下载正确版本后,覆盖以下路径:
- Apache bin目录:apache\bin\ntwdblib.dll
- PHP目录:php\ntwdblib.dll
- 系统目录:system32\ntwdblib.dll(若仍报错,务必复制到此处)

PHP环境与扩展配置

确保PHP能够识别MSSQL函数,需修改配置文件并进行必要的文件拷贝操作。

第1步:启用mssql扩展

目的:加载数据库连接功能模块。
操作:打开php.ini文件,找到并取消注释以下行:

extension=php_mssql.dll

完成状态:行首无分号;。

第2步:配置安全连接选项

目的:避免某些版本SQL Server因安全协议拒绝连接。
操作在php.ini中找到mssql.secure_connection参数,将其值改为On:

mssql.secure_connection = On

第3步:确认DLL文件路径

目的:确保PHP能找到扩展库。
操作:将php_mssql.dll文件复制到php.ini中extension_dir指定的目录,或者系统system32目录下。
注意:如果使用的是IIS结合PHP压缩文件安装的环境,重启Apache可能无效,需重启整个机器以加载系统级DLL。

SQL Server服务端配置

即使PHP配置无误,若SQL Server未开放相应网络协议,连接同样会失败。

第1步:启用网络协议

入口:SQL Server Configuration Manager → SQL Server Network Configuration → Protocols for MSSQLSERVER。
动作:确保TCP/IP和Named Pipes处于Enabled状态。

第2步:设置动态端口

入口:右键点击TCP/IP → Properties → IP Addresses标签页。
动作:向下滚动至IPAll部分,找到TCP Dynamic Ports,填入1433。
重要参数:1433是SQL Server默认端口,明确指定可避免动态分配端口导致的连接超时。

第3步:重启服务

动作:重启SQL Server服务和Apache服务器,使配置生效。

连接代码示例与常见问题排查

使用标准的mssql_connect函数进行测试。

// 链接数据库
$conn = mssql_connect('localhost', 'sa', 'password');
mssql_select_db('database_name', $conn);

// 查询语句
$Query = "select * from table_name";
$Result = mssql_query($Query);

// 输出结果
$Num = mssql_num_rows($Result);
for($i=0; $i<$Num; $i++) {
$Row = mssql_fetch_array($Result);
echo $Row[1];
}
?>

常见报错解决方案

1. Fatal error: Call to undefined function mssql_connect()
此错误表明PHP未加载扩展。请再次检查:
- php.ini中是否已移除extension=php_mssql.dll前的分号。
- extension_dir路径是否正确指向包含php_mssql.dll的文件夹。
- 若路径正确但仍报错,请将php_mssql.dll和ntwdblib.dll同时复制到system32并重启。

2. Unable to connect to server
通常由网络或协议层阻止引起:
- 确认SQL Server服务正在运行。
- 确认防火墙允许1433端口通信。
- 若PHP与SQL Server不在同一机器,需检查hosts文件或DNS解析,确保能通过机器名访问服务器IP。

PHP 5.3及以上版本的替代方案

对于PHP 5.3+版本,传统的ISAPI模式已不再支持,微软推荐使用FastCGI模式。此时不应依赖旧的php_mssql扩展,而应安装SQL Server Driver for PHP(如version 1.1或更高)。该驱动基于ODBC实现,性能更优且兼容现代SQL Server版本。安装前需确保系统中已安装Microsoft Data Access Components (MDAC) 或 SQL Native Client。

以上就是PHP连接SQL Server注意事项、ntwdblib.dll版本配置及排错的详细内容,更多关于PHP数据库连接优化的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表