日期:2014-05-16  浏览次数:20691 次

linux下php链接sqlserver数据库

编译资料 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)。

配置