centos6.5 64位下PHP远程连接sql server2008成功案例
准备工作:
1、sql server2008服务器(开放远程端口,默认为1433,我用的是192.168.1.129)
2、安装好php的centos服务器
步骤:
1、php安装mssql扩展。centos下用yum安装比较方便,但是默认情况下yum库里并没有mssql可供安装,此时需要安装fedoraproject的epel-release源,即可以安装php的mssql模块。
注:epel是fedora开发组为centos开发的附加软件yum源,可以弥补centos上游redhat里缺少的软件包,epel的质量还是相当之高的。
[root@sky html]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm [root@sky html]# yum install php-mssql [root@sky html]# /etc/init.d/httpd graceful
查看phpinfo可以看到mssql扩展信息:
特别注意那个FreeTDS,mssql实际还是FreeTDS,其功能主要是在Liunx下能够访问Sybase及MS SQL,官方网站是:http://www.freetds.org/。
2、配置FreeTDS。安装mssql后,freetds作为dependence也安装至系统中,查看freetds的基本信息:
[root@sky html]# tsql -C
发现其配置文件位于/etc文件夹下,修改配置文件:
[root@sky html]#vi /etc/freetds.conf
在文档后面加上实际的sql server2008的连接信息:
[SERVER1]
host = 192.168.1.129
port = 1433
tds version = 7.0
client charset = UTF-8
保存后确认freetds可以连上sql server2008:
[root@sky html]#tsql -S SERVER1 -U account -P password
出现以下信息表示连接成功:
3、使用php连接sql server2008。
代码如下:
<? $conn=mssql_connect('SERVER1','account','password') or die('Something went wrong while connecting to MSSQL'); mssql_select_db('skyl',$conn); $sql="select * from sysobjects where Xtype='V' and status>=0"; $result=mssql_query($sql); while($res=mssql_fetch_array($result,MSSQL_ASSOC)){ print_r($res); } mssql_close($conn); ?>
注意连接时的SERVER1字串,此即为freetds配置文件里的SERVER1,连接将使用配置文件里的编码UTF-8;若SERVER1改用IP地址代替,则连接默认使用sql server2008默认的编码,一般为Latin1-Gerneral,容易导致中文乱码。
中文乱码的另一种解决方案:sql语句写成:select DEPT1 collate Chinese_PRC_CI_AS dept1 from xxxxx。