这种方式是比较纠结的,没有哪个公司在开始时就设计成这个样子的,这是公司技术架构转型时要面对的,是临时的无奈之举
需要freetds工具,官方网址:www.freetds.org
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz
tar zxvf freetds-0.91.tar.tgz
cd freetds-0.91
./configure --prefix=/usr/local/freetds
make
make install
修改/usr/local/freetds/etc/freetds.conf
[global]
tds version = 8.0 #这个是必须设置的,版本过低的话会出现连接不上sqlserver
client charset = UTF-8 #设置客户端编码,出现乱码时需要根据web页面设置,也可转码解决,编码为大写
text size = 64512
[egServer50]
host = symachine.domain.com
port = 5000
tds version = 5.0
[egServer70]
host = ntmachine.domain.com
port = 1433
tds version = 7.0
我们用freetds提供的命令测试连接
/usr/local/freetds/bin/tsql -H 192.168.18.100 -p 1433 -U sa -P sa
[root@vm3 freetds]# /usr/local/freetds/bin/tsql -H 192.168.18.100 -p 1433 -U sa -P sa
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset " UTF-8"
1> use test
2> go
1> select * from [dbo].[mess]
2> go
id name
1 你好
(1 row affected)
1> quit
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset " UTF-8"
1> use test
2> go
1> select * from [dbo].[mess]
2> go
id name
1 你好
(1 row affected)
1> quit
下载php源码,官方网址:php.net
wget http://cn2.php.net/get/php-5.3.21.tar.bz2/from/this/mirror
tar jxvf php-5.3.21.tar.bz2
cd php-5.3.21
./configure --prefix=/usr/local/php --enable-fpm --with-mssql=/usr/local/freetds
make -j 4
make install
nginx的安装很简单,在此略
查看freetds模块是否加载,创建一个php文件:
<?php
phpinfo();
通过web访问,看是否有mssql模块

写个测试数据库连接的php文件
cat mssql.php
<?php
ini_set('display_errors','on');
error_reporting(E_ALL);
header('Content-Type:text/html;charset=utf8');
$link = mssql_connect('192.168.18.100:1433','sa','sa');
mssql_select_db('test');
$sql = "select * from [dbo].[mess]";
$res = mssql_query($sql);
$data = mssql_fetch_assoc($res);
var_dump($data);
mssql_close();
ini_set('display_errors','on');
error_reporting(E_ALL);
header('Content-Type:text/html;charset=utf8');
$link = mssql_connect('192.168.18.100:1433','sa','sa');
mssql_select_db('test');
$sql = "select * from [dbo].[mess]";
$res = mssql_query($sql);
$data = mssql_fetch_assoc($res);
var_dump($data);
mssql_close();

好了,顺利获取了sqlserver数据
二、在windows下用php连接 sql server 2000:
也是利用freetds,但是是在windows下编译的动态连接库dblib.dll
本例使用的是php5.3.8 "Thread Safe(TS)" "VC9",一般 php5.2.x 使用的是 VC6,php5.3.x 使用的是 VC9
下载地址:http://download.moodle.org/download.php/dblib/php53/DBLIB_TS.zip
解压缩
DBLIB_TS.zip,将解压出来的 php_dblib.dll 放到php的ext目录下,并编辑 php.ini 配置文件,加入这个动态链接库文件:extension=php_dblib.dll
并注释
(禁用)
掉 php_mssql.dll,即 ;
extension=
php_mssql.dll
接下来需要在 php 安装根目录下创建一个配置文件 freetds.conf,内容如下:
[global]
host = 192.168.18.100 (host name or ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520
host = 192.168.18.100 (host name or ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520
未完,待续。
转载于:https://blog.51cto.com/haoyun/1125505