PHP连接SQL Server 2005环境配置及常见问题解决
本文提供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的数据协议。
操作步骤:
- 检查当前PHP安装目录下是否存在
ntwdblib.dll。默认情况下PHP可能自带该文件,但版本往往不匹配SQL Server 2005。 - 下载特定版本的
ntwdblib.dll,要求版本号必须为 2000.80.194.0。此版本专为SQL Server 2005设计(注:2000.2.8.0对应SQL Server 2000,2000.80.2039对应SQL Server 2008)。 - 将下载好的文件覆盖到PHP安装根目录。
第2步:配置php.ini启用MSSQL扩展
目的:开启PHP连接SQL Server的功能模块。
操作入口:C:\Windows\php.ini
具体动作:
- 取消注释:找到
extension=php_mssql.dll,删除行首的分号;。
注意:如果提示找不到dll文件,请确认extension_dir指向的路径(如c:\php\ext)是否正确,并将php_mssql.dll复制到该目录或系统System32目录下。 - 修改安全设置:查找
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
具体动作:
- 右键点击
TCP/IP,选择“启用”。 - 进入
TCP/IP的属性,切换到“IP地址”选项卡。 - 下拉滚动至
IPAll部分,找到TCP Dynamic Ports,清空其值或设置为1433(标准端口)。注意不要将静态端口1433直接填入Dynamic Ports而不调整其他设置,通常确保TCP Port为 1433 即可。 - 重启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缺失/版本错误。
- 解决方案:
- 再次检查
php.ini中是否已去除extension=php_mssql.dll前的分号。 - 确保
extension_dir路径准确无误。 - 将
php_mssql.dll和ntwdblib.dll(版本2000.80.194.0) 同时拷贝至C:\Windows\System32目录。 - 重启Web服务器。
- 再次检查
问题2:跨机器连接不通
- 现象:PHP与SQL Server不在同一台机器。
- 解决方案:
- 确认能Ping通SQL Server所在机器的IP。
- 若无法解析主机名,编辑客户端
C:\Windows\System32\drivers\etc\hosts文件,添加映射:IP地址 机器名称。 - 确认客户端机器安装了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数据库连接优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













