Linux服务器PHP连接SQL Server 2000数据库配置指南
针对在传统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基础库,为后续源码编译做准备。
第2步:下载并编译安装FreeTDS
目的:获取支持TDS协议的底层驱动库。
关键参数说明:
其中 --with-tdsver=8.0 是关键参数,代表TDS协议版本对应SQL Server 2000。若连接更高版本数据库需调整为8.0以上的版本号。
第3步:配置FreeTDS连接参数
目的:定义远程SQL Server的地址、端口及字符集映射。
- 备份原有配置文件:
cp /usr/local/freetds/etc/freetds.conf /usr/local/freetds/etc/freetds.confbak - 编辑配置文件:
vi /usr/local/freetds/etc/freetds.conf
在文件末尾添加以下段落,注意方括号内的名称将作为主机别名使用:
此处配置指定了SQL Server地址、标准TCP端口1433、TDS版本8.0(即SQL2000)以及客户端字符集UTF-8以解决乱码问题。

第4步:验证FreeTDS连通性
目的:确认Linux底层能成功握手Windows SQL Server。
方法一:交互式登录测试
系统提示输入密码,若能进入命令行界面表示连通正常。

方法二:静默执行SQL测试(推荐用于脚本排查)
若不报错且返回结果集,则驱动配置无误。

第二部分:配置PHP环境连接SQL Server
根据PHP的安装方式(yum安装或源码编译),选择对应的扩展加载方案。
第5步:安装php-mssql扩展
目的:在PHP中启用调用FreeTDS驱动的模块。
情况A:Yum在线安装(常见于宝塔/一键包环境)
通常标准源可能缺少 php-mssql,需先引入第三方源(如Atomicorp):
情况B:源码编译安装(通用性强)
使用PHP源码包中的 mssql 扩展目录进行编译:
重要:参数 --with-mssql=/usr/local/freetds 必须指向第1步中实际安装的FreeTDS路径。
第6步:修改php.ini启用扩展
入口:/usr/local/php5/etc/php.ini (路径视具体安装位置而定)
动作:在文件末尾添加以下代码:
保存退出后,务必重启Web服务使配置生效:
第三部分:PHP代码测试与故障排查
第7步:编写连接测试脚本
入口:网站根目录,例如 /usr/local/nginx/html
动作:新建 sql.php 文件,填入以下内容:
完成状态判断:
访问该文件,浏览器输出 "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数据库的详细配置内容,更多关于跨平台数据库集成的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













