Ubuntu系统下配置php支持SQLServer 2005最近在做一个项目,该项目的数据库是微软公司的的SQLserver ,数据库安装在另一台windows服务器上,而项目却部署在ubuntu server上。那么这样就会涉及到项目在linux上如何链接SQLserver ?在这里我用的是freetds 来做链接数据库的中间件,下面是我实践的步骤:
1.下载最新的freetds
访问 http://www.freetds.org/, 或者在 ubuntu上用 wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz 下载稳定的版本。
2.安装freetds 和 配置 freetds
cd 进入freetds所在目录,执行命令:
解压
tar zxvf freetds-stable.tgz
编译安装
./configure --PRefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
make
[sudo] make install
configure 步骤和 make 步骤可以用 普通用户的权限来完成,install 步骤最好用root 用户,或者是对/usr/local/目录有读写的权限的用户.
配置:
编辑/etc/ld.so.conf,在其中插入一行:/usr/local/freetds/lib然后运行以下指令使更改生效:ldconfig
编辑freetds 的配置文件,配置数据库连接信息
vim /usr/local/freetds/etc/freetds.conf截图如下:
在这里找到egServer70节点,配置你数据所在的服务器地址,一般端口不用改,除非数据库访问用的是其它端口。注意一般这个配置文件中是没有 client charset 的选项的,
需要手动添加,防止数据库乱码。这里设置成 utf8 , 这个编码要和数据库编码一致。修改完成之后就保存退出。然后验证这个配置是否是ok 的。
cd /usr/local/freetds/bin/./tsql -H [主机Host] -p 1433 -U [用户名] -P [密码] -D [数据库] (主机Host可以填写 egServer70)
注意你的密码有特殊字符例如 !和 # 之类的,那么需要加上转义符 \!\# ,这样就会被 freetds 识别。
如果执行该命令返回的是 如下信息
Unexpected EOF from the server
那说明是freetds 的版本信息不正确,关于freetds 版本的信息 可以参考 http://www.freetds.org/userguide/choosingtdsprotocol.htm
那么对应的版本信息修改只需要在/usr/local/freetds/etc/freetds.conf中修改 特定数据库连接的tds version ,这里我连接的是 SqlServer 2005 ,默认版本是 7.0 , 但是连接报错,所以这里我修改成了7.1 就ok 了,截图如下:
修改完成之后,再次测试如果返回的结果下,那么就说明连接数据库成功了。
3.php 连接 SQLserver
上面的测试直接用freetds 测试数据库是否可以链接数据库,那么怎么才能让php也支持SqlServer 呢? 这里需要用到php5的开发者模式,之前我默认只安装了php5,
所以这里你需要安装一下php5-dev ,直接用命令
[sudo] apt-get install php5-dev
安装完成后在/usr/bin 目录下就会看到 phpize5 等相关php 开发这模式的插件
QQZlzqpqxnYrB1lTCwbH1qp5ycO0r0/C3EMTvahskFAhfNSL9inkWRWXmyEtJW5e2Uhts1yQlMR+9X7FStleg6Q8u4JSVkq