Linux服务器PHP连接SQL Server 2000数据库配置指南

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

针对在传统LAMP/LNMP环境中需要连接旧版SQL Server 2000数据库的场景,本文提供基于Linux服务器的完整解决方案。通过安装FreeTDS驱动并配置php-mssql扩展,打通Linux与Windows数据库之间的通信链路,确保PHP应用能稳定读写数据。

配置目标与前置条件

本教程旨在实现Linux服务器中的PHP程序连接Windows服务器上的SQL Server 2000数据库。由于PHP原生不支持直接连接微软SQL Server,必须借助开源中间件 FreeTDS 进行协议转换。

参考环境:

  • Linux服务器:CentOS 5.5 或兼容版本
  • Web环境:LAMP(Apache)或 LNMP(Nginx)
  • Windows服务器:Windows Server 2003 / 2008
  • 数据库IP:192.168.21.134
  • 数据库凭证:用户名 sa / 密码 123456(请根据实际情况替换)

第一部分:安装与配置FreeTDS驱动

第1步:安装系统编译工具与ODBC依赖

目的:获取GCC编译器、自动化工具以及Unix ODBC基础库,为后续源码编译做准备。

yum install make apr* autoconf automake gcc gcc-c++ wget yum -y install unixODBC unixODBC-devel

第2步:下载并编译安装FreeTDS

目的:获取支持TDS协议的底层驱动库。

cd /usr/local/src wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz gunzip freetds-stable.tgz tar -xvf freetds-stable.tar cd freetds-0.91

关键参数说明:

./configure --prefix=/usr/local/freetds \ --with-tdsver=8.0 \ --with-unixodbc=/usr \ --enable-msdblib

其中 --with-tdsver=8.0 是关键参数,代表TDS协议版本对应SQL Server 2000。若连接更高版本数据库需调整为8.0以上的版本号。

make make install

第3步:配置FreeTDS连接参数

目的:定义远程SQL Server的地址、端口及字符集映射。

  1. 备份原有配置文件:cp /usr/local/freetds/etc/freetds.conf /usr/local/freetds/etc/freetds.confbak
  2. 编辑配置文件:vi /usr/local/freetds/etc/freetds.conf

在文件末尾添加以下段落,注意方括号内的名称将作为主机别名使用:

[192.168.21.134] host = 192.168.21.134 port = 1433 tds version = 8.0 client charset = UTF-8

此处配置指定了SQL Server地址、标准TCP端口1433、TDS版本8.0(即SQL2000)以及客户端字符集UTF-8以解决乱码问题。

第4步:验证FreeTDS连通性

目的:确认Linux底层能成功握手Windows SQL Server。

方法一:交互式登录测试

/usr/local/freetds/bin/tsql -S 192.168.21.134 -U sa

系统提示输入密码,若能进入命令行界面表示连通正常。

方法二:静默执行SQL测试(推荐用于脚本排查)

./tsql -S 192.168.21.134 -p 1433 -U sa -P 123456 -D master

若不报错且返回结果集,则驱动配置无误。

第二部分:配置PHP环境连接SQL Server

根据PHP的安装方式(yum安装或源码编译),选择对应的扩展加载方案。

第5步:安装php-mssql扩展

目的:在PHP中启用调用FreeTDS驱动的模块。

情况A:Yum在线安装(常见于宝塔/一键包环境)

通常标准源可能缺少 php-mssql,需先引入第三方源(如Atomicorp):

wget http://www.atomicorp.com/installers/atomic sh ./atomic yum install php-mssql

情况B:源码编译安装(通用性强)

使用PHP源码包中的 mssql 扩展目录进行编译:

cd /usr/local/src/php-5.3.15/ext/mssql /usr/local/php5/bin/phpize ./configure --with-php-config=/usr/local/php5/bin/php-config --with-mssql=/usr/local/freetds make make install

重要:参数 --with-mssql=/usr/local/freetds 必须指向第1步中实际安装的FreeTDS路径。

第6步:修改php.ini启用扩展

入口:/usr/local/php5/etc/php.ini (路径视具体安装位置而定)

动作:在文件末尾添加以下代码:

extension = "mssql.so"

保存退出后,务必重启Web服务使配置生效:

# Apache用户 service httpd restart # Nginx/PHP-FPM用户 service php-fpm restart

第三部分:PHP代码测试与故障排查

第7步:编写连接测试脚本

入口:网站根目录,例如 /usr/local/nginx/html

动作:新建 sql.php 文件,填入以下内容:

<?php $mssql = mssql_connect("192.168.21.134", "sa", "123456"); if ($mssql) { echo "Connent Mssql Succeed"; } else { echo "connent Mssql Error!"; } ?>

完成状态判断:
访问该文件,浏览器输出 "Connent Mssql Succeed" 即为成功。

第8步:确认扩展已加载

创建 index.php 内容为 <?php phpinfo(); ?>,查看页面中是否存在 mssql 区块。若存在且显示了 FreeTDS 相关信息,说明底层扩展已正确挂载。

常见问题排错

  • 链接失败:检查 freetds.conf 中的 [主机名] 是否与 mssql_connect 使用的字符串完全一致。
  • 字符乱码:确保 freetds.conf 中设置了 client charset = UTF-8,并在SQL查询层面保持编码一致。
  • 防火墙拦截:确认Windows服务器安全策略放行了TCP 1433端口。

以上就是Linux下PHP连接SQL Server 2000数据库的详细配置内容,更多关于跨平台数据库集成的资料请关注本站其它相关文章!

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表