由于公司项目的原因,数据库一直用的是window + apache + php + mssql,现在准备把程序迁移到linux,但是数据库暂不迁移,所以需要在linux下用php连接mssql。但是程序里面用的是微软官方的mssql驱动,在linux下根本不支持。为了避免迁移成本过高,只有自己用php官方的mssql驱动去实现微软官方的sqldrv驱动一样的函数包,这样就不需要修改程序,只是添加一些函数就可以了。
1.安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz
tar xvf freetds-stable.tgz
cd freetds-0.91/
./configure --enable-msdblib --prefix=/usr/local/freetds
make
make install
touch /usr/local/freetds/include/tds.h
touch /usr/local/freetds/lib/libtds.a
配置freetds,否则无法访问mssql:http://developer.51cto.com/art/201101/242891.htm
vi /usr/local/freetds/etc/freetds.conf
加入以下内容:
加入以下内容:
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
host = mssql.yourdomain.com
port = 1433
tds version = 8.0
client charset = UTF-8
2.编译安装mssql扩展
注意需要有php的源码包才行,之前我的php就是源码编译安装的
cd /root/download/php-5.4.14/ext/mssql/
/usr/local/php/bin/phpize
./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/php/bin/php-config
make
//将mssql.so添加到php的ext目录去。
cd /root/download/php-5.4.14/ext/mssql/modules/
cp mssql.so /usr/local/php/include/php/ext/
//修改php.ini,加载mssql扩展。重新加载php-fpm。