日期:2014-05-16 浏览次数:20691 次
编译资料 http://www.linuxidc.com/Linux/2008-02/11117.htm
?
提出问题
前几天做了一个非常奇怪的项目,我公司开发了一套基于中国联通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中建立数据库连接
$link=mssql_connect("sqlserver",$your_username,$your_password) or die (“can’t Connect to Database”);
echo $link;
在浏览器中运行上面脚本, 如果你得到一个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文件,它可以告诉你很多出错的信息帮助你排除问题。
?
?
?
PHP连接Microsoft SQL Server数据库
此页由Linux Wiki用户Chenxing于2008年2月9日 (星期六) 07:31的最后更改。
出自Linux Wiki
在Windows中PHP可以使用mssql系列函数访问Microsoft SQL Server。在Linux服务器中,通过PHP连接Microsft SQL Server主要有两种方法。
提示:
在系统中直接连接MSSQL的方法见连接Microsoft SQL Server数据库。
目录
?[隐藏]
1 基本原理
2 方法一(db-lib)
2.1 Debian、Ubuntu等
2.2 其它发行版
3 方法二(ODBC)
4 相关资料
?
基本原理
FreeTDS为Linux系统提供了TDS协议的开源客户端。由于MS SQL和Sybase使用的恰是TDS协议,所以在Linux中可以用FreeTDS连接MS SQL。[1]
下面介绍两种方法:
方法一(db-lib)
使用该方法配置后的代码与Windows中相同,可以使用如下代码:[2]
<?php
$msconnect=mssql_connect("服务器","用户名","密码");
$msdb=mssql_select_db("数据库名",$msconnect);
$msquery = "select titleofcourtesy from employees";
$msresults= mssql_query($msquery);
while ($row = mssql_fetch_array($msresults)) {
?????? echo "<li>$row['titleofcourtesy']</li>\n";
}
?>配置的过程:
Debian、Ubuntu等
可以用php的db-lib连接,在Debian Based系统中(如Debian、Ubuntu等),操作很简单:
$ sudo apt-get install php5-sybase
apt-get会自动寻找依赖的包进行安装。重新启动apache即可:
$ sudo /etc/init.d/apache2 restart
其它发行版
如果使用其它发行版,请先找一下发行版是否提供了类似的包,如果没有,就需要重新编译PHP:[3]
先编译freetds:
$ ./configure --prefix=/usr/local/freetds
$ make
$ su root
Password:
$ make install
再编译PHP
$ cd php
$ ./configure --with-sybase=/usr/local/freetds
$ make
$ su root
Password:
$ make install
方法二(ODBC)
先配置系统的ODBC,再使用PHP的odbc驱动连接(需要PHP中编译了odbc驱动,debian系统要安装 php5-odbc)。
配置