Linux下PHP连接MS SQLServer的办法

http://www.cnblogs.com/huang/archive/2006/08/16/478349.aspx

Linux下PHP连接MS 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文件,它可以告诉你很多出错的信息帮助你排除问题。

======================================================================================================

http://www.linuxidc.com/Linux/2012-09/70192.htm


Linux下PHP连接MSSQL2005/2008

Linux下PHP 5.2.17测试成功

tar zxvf freetds-0.8.2.tar.gz

cd freetds-0.8.2/

./configure --enable-msdblib --prefix=/usr/local/freetds --with-tdsver=8.0
make && make install
cd /home/lnmp0.9/php-5.2.17/ext/mssql/   依个人可能不同
/usr/local/php/bin/phpize   ####php扩展信息
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds

make && make install

vim /usr/local/php/etc/php.ini
在extension = "pdo_mysql.so"下面添加
extension = "mssql.so"

保存后,/root/lnmp restart 即可

若搜索的结果有中文乱码则

vim /usr/local/freetds/etc/freetds.conf

[global]  加上

client charset = utf8

  1. $sql=mssql_connect('192.168.0.185','sa','1','1433');  
  2. mssql_select_db('test',$sql);  
  3. $result=mssql_query("select top 10 * from test1")  
  4. while($row=mssql_fetch_assoc($result)){    
  5.      print_r($rows);  
  6. }  

freetds-0.8.2.tar.gz下载地址:

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2012年资料/9月/11日/Linux下PHP连接MSSQL2005&2008

====================================================================================================================================

linux使php支持sqlserver(mssql)  

1. RPM方式安装mssql包

如果采用rpm安装的话,可以采用以下方式直接安装
# yum install php-mssql

注明:不前还不知道freetds的作用,可以直接连了.
# vi /etc/freetds.conf
[global]
text size = 64512
host = 192.168.16.101
port = 1433
tds version = 8.0
client charset = UTF-8

2. 重新编译php使支持mssql
(1) 编译安装FreeTDS
# mkdir -p /data
# cd /data
# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz
# cd freetds-0.82/
# ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
# make && make install
# cd ../

# echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
# ln -s /usr/local/freetds/lib/libsybdb.so.5.0.0 /usr/local/freetds/lib/libsybdb.so.4
# /sbin/ldconfig

# rm -f /usr/local/freetds/etc/freetds.conf
# vi /usr/local/freetds/etc/freetds.conf
[global]
text size = 64512
host = 192.168.16.101
port = 1433
tds version = 8.0
client charset = UTF-8

(2) 编译安装PHP自带MSSQL扩展
# cd /data/php-5.2.XX/ext/mssql/
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
# make && make install

这样就会在PHP的扩展目录中生成一个mssql.so文件

3. 测试连接
<?php
 $con=mssql_connect("192.168.16.101","sa","123456");
 if ($con)
 {
    echo  "连接成功";
 }
 else
    echo  "连接失败";
?>          

# php sql.php 
连接成功

[root@wofang ~]# tsql -S 192.168.16.101 -U sa
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password: 
1>

本文链接:http://blog.163.com/koumm@126/blog/static/9540383720112157055119/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值