动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 Linux下PHP连接MS SQLServer的办法

作者来源: 
阅读 1271 人次 , 2006-3-29 4:13:00 


提出问题

前几天做了一个非常奇怪的项目,我公司开发了一套基于中国联通sgip协议的sp端短消息服务软件,提供联通130短信服务。这套系统是windows 2000下的,数据库采用的是微软sqlserver2000,并且已经正常运行了一段时间。而最近由于要在web上提供短消息用户的一些信息,就需要从web上读写sqlserver数据库,本来sqlserver数据库的最佳搭档应该是微软iis asp服务端脚本,但我公司一向认为iis+asp的稳定性和安全性都不尽如意,希望能够在linux下用php脚本读写sqlserver。
分析问题

本来php脚本读写sqlserver是没有什么问题的,在apache for windows和windows iis下可以工作的很好,一般可以通过odbc或sqlserver client连接,这都是windows下面现成的。但是在linux下面没有现成的odbc和sqlserver client,需要我们自己安装。
解决问题

一、相关软件
freetds 来源:ftp://ftp.ibiblio.org/pub/linux/alpha/freetds/freetds-0.53.tgz
这个软件能够用linux和unix连接ms sqlserver和sybase数据库。
二、安装配置步骤
第一步:编译安装freetds:
得到freetds-0.53.tgz后
cp freetds-0.53.tgz /tmp/. (拷贝freetds包到/tmp目录)
cd /tmp (进入目录)
tar zxvf freetds-0.53.tgz (解压)
cd freetds-0.53 (进入解压后目录)
./configure –prefix=/usr/local/freetds --with-tdsver=7.0
gmake (生成makefile,我试验过,make也可以)
gmake install (安装)
关于上面configure我想说一下,--prefix=/usr/local/freetds是指安装到/usr/local/freetds这个目录中,--with-tdsver=7.0是指安装tds 7.0版本(最开是我没有加这个编译参数,结果按照默认编译为5.0。5.0连接数据库的端口是4000,不是sqlserver的1433)
第二步:重新编译php4
./configure [--with-apxs --with-mysql...] --with-sybase=/usr/local/freetds(请注意是sybase)
make
make install
第三步:配置freetds
vi /usr/local/freetds/etc/freetds.conf
具体配置见该文件中的说明
例: (典型配置)
[sqlserver]
host = sql_server_name_or_host_ip (你的sqlserver机器名字或者ip地址)
port = 1433
tds version = 7.0
在这个配置文件中可以配置windows域登陆或者sqlserver账号登陆两种方式
第四步:配置php.ini文件
找到 ;extension=mssql70.so
将注释;去掉成
extension=mssql70.so
第五步:在php中建立数据库连接
上一篇      目录      下一篇=mssql_connect("sqlserver",$your_username,$your_password) or die (“can’t connect to database”);
echo 上一篇      目录      下一篇;
在浏览器中运行上面脚本, 如果你得到一个link号那么恭喜,你已经配置好了,如果出现call to undefined function: mssql_connect() 那说明仔细看上面的安装配置过程看你哪一步没有对。
注意:sqlserver名称是在/usr/local/freetds/etc/freetds.conf中定义的host参数,如果你写的ip地址,就是ip地址。
其他数据库操作参考相关mssql函数
注意,在sql语句中不支持中文!!!
第六步:调试
如果出现不能连接,请在freetds配置文件中找到;dump file = /tmp/freetds.log这一行,注释掉前面的分号,再执行一下测试脚本,察看/tmp/freetds.log文件,它可以告诉你很多出错的信息帮助你排除问题。

 本文Tagsmssql  数据库  linux  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:两种统计当前在线人数的方法
· 下一篇:将PHP从4.0.6升到4.2.1的注意事项
· php分页列表实例
· PHP栏目导航类
· PHP中一个文档中没有的特色
· 一个MYSQL连接类
· 使用PHP实现繁体与简体互转


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077