PHP连接SQL Server 2005环境配置及常见问题解决

Mia
Mia
发布时间:2026-10-14 | 4人浏览过
原创

本文提供PHP连接SQL Server 2005的完整配置指南,涵盖Windows平台下的NTWDBLIB.DLL替换与扩展启用,以及Linux平台下使用FreeTDS库的连接方法。详细解决调用未定义函数、端口配置及跨机器连通性等常见问题。

Windows下PHP连接SQL Server 2005配置

在Windows系统中,由于原生MSSQL扩展对新版SQL Server的支持问题,通常需要手动配置特定的动态链接库并修改PHP设置。以下为基于PHP安装在C:\PHP目录,配置文件位于C:\Windows\php.ini的标准操作路径。

第1步:下载并替换正确的ntwdblib.dll文件

目的:确保PHP能够正确识别SQL Server 2005的数据协议。

操作步骤:

  1. 检查当前PHP安装目录下是否存在 ntwdblib.dll。默认情况下PHP可能自带该文件,但版本往往不匹配SQL Server 2005。
  2. 下载特定版本的 ntwdblib.dll,要求版本号必须为 2000.80.194.0。此版本专为SQL Server 2005设计(注:2000.2.8.0对应SQL Server 2000,2000.80.2039对应SQL Server 2008)。
  3. 将下载好的文件覆盖到PHP安装根目录。

第2步:配置php.ini启用MSSQL扩展

目的:开启PHP连接SQL Server的功能模块。

操作入口:C:\Windows\php.ini

具体动作:

  1. 取消注释:找到 extension=php_mssql.dll,删除行首的分号 ;。
    注意:如果提示找不到dll文件,请确认 extension_dir 指向的路径(如 c:\php\ext)是否正确,并将 php_mssql.dll 复制到该目录或系统 System32 目录下。
  2. 修改安全设置:查找 mssql.secure_connection = Off,将其改为 mssql.secure_connection = On。

完成判断:保存php.ini后,需重启Apache服务(若为手工安装至IIS,可能需要重启计算机而非仅重启IIS)。

第3步:配置SQL Server网络协议

目的:允许远程或本地通过TCP/IP访问数据库。

操作入口:运行 SQL Server Configuration Manager → SQL Server 2005 Network Configuration → Protocols for MSSQLSERVER

具体动作:

  1. 右键点击 TCP/IP,选择“启用”。
  2. 进入 TCP/IP 的属性,切换到“IP地址”选项卡。
  3. 下拉滚动至 IPAll 部分,找到 TCP Dynamic Ports,清空其值或设置为 1433(标准端口)。注意不要将静态端口1433直接填入Dynamic Ports而不调整其他设置,通常确保 TCP Port 为 1433 即可。
  4. 重启SQL Server服务以使更改生效。

第4步:编写测试代码验证连接

操作说明:创建文件 test.php,写入以下代码并访问。

<?php
// 连接数据库,参数分别为服务器地址、用户名、密码
$conn = mssql_connect('localhost', 'sa', 'password');
mssql_select_db('database_name', $conn);

// 执行查询
$Query = "SELECT * FROM table_name";
$result = mssql_query($Query);

// 输出结果数量
$num_rows = mssql_num_rows($result);
echo "Rows found: " . $num_rows;
?>

第5步:常见问题排查 (FAQ)

问题1:Fatal error: Call to undefined function mssql_connect()

  • 原因分析:PHP未加载MSSQL扩展,或依赖的DLL缺失/版本错误。
  • 解决方案:
    1. 再次检查 php.ini 中是否已去除 extension=php_mssql.dll 前的分号。
    2. 确保 extension_dir 路径准确无误。
    3. 将 php_mssql.dll 和 ntwdblib.dll (版本2000.80.194.0) 同时拷贝至 C:\Windows\System32 目录。
    4. 重启Web服务器。

问题2:跨机器连接不通

  • 现象:PHP与SQL Server不在同一台机器。
  • 解决方案:
    1. 确认能Ping通SQL Server所在机器的IP。
    2. 若无法解析主机名,编辑客户端 C:\Windows\System32\drivers\etc\hosts 文件,添加映射:IP地址 机器名称。
    3. 确认客户端机器安装了MDAC组件或SQL Server Native Client。

Linux下PHP连接SQL Server 2005配置

在Linux环境中,PHP本身不包含连接MSSQL的原生驱动,通常通过开源库 FreeTDS 进行桥接。

第1步:安装编译FreeTDS

目的:建立PHP与SQL Server之间的通信协议桥梁。

操作顺序:

./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static
make
make install

关键参数说明: --with-tdsver=8.0 是配置核心。虽然SQL Server 2005支持TDS 7.2,但在编译FreeTDS时指定8.0是常见的兼容性做法,后续在连接配置中会指定实际版本。

第2步:配置freetds.conf

操作入口:/usr/local/freetds/etc/freetds.conf

具体动作:添加如下段配置,其中 [local_mssql] 为自定义的连接别名,将在PHP中使用。

[local_mssql]
    host = 192.168.1.100  # SQL Server IP
    port = 1433
    tds version = 7.2     # SQL Server 2005 对应的 TDS 版本通常为 7.2 或 8.0

注意:在PHP调用时,第一个参数应使用 [local_mssql] 这个别名,而不是IP地址。

第3步:编译安装PHP

目的:让PHP加载FreeTDS支持。

操作说明:在PHP源码编译时,增加配置项 --with-mssql=/usr/local/freetds/。

排错提示:如果编译时报错找不到 freetds 目录,可能是头文件或库文件路径问题,可尝试执行以下命令模拟文件存在(官方FAQ workaround):

touch /usr/local/freetds/include/tds.h
touch /usr/local/freetds/lib/libtds.a

之后重新运行 make 和 make install。

第4步:重启服务并测试

完成后重启Apache服务。此时可使用与Windows相同的 mssql_connect() 函数族,但第一个参数填写为 freetds.conf 中定义的别名(如 local_mssql),例如:

$conn = mssql_connect('local_mssql', 'sa', 'password');

以上就是PHP连接SQL Server 2005的详细环境与代码配置内容,更多关于PHP数据库连接优化的资料请关注本站其它相关文章!

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表