系统环境:
CentOS 6.4
软件仓库php5.3.3 带php-devel包
希望能够得到mssql.so 支持。
安装freetds:
http://www.freetds.org/ 下载最新稳定版本:freetds.stable.tgz 我得到的版本是0.91。下方的命令安装:
# tar zxvf freetds-current.tgz
# ./configure –prefix=/usr/local/freetds –with-tdsver=7.2 –enable-msdblib
# make
# make install
配置,我要求链接到SQL Server 2005:
修改/usr/local/freetds/etc/freetds.conf
[Server2005]
host = 192.168.1.100 #根据自己改port = 1433
tds version = 7.2
client charset = UTF-8
tds version 选择参考:http://www.freetds.org/userguide/choosingtdsprotocol.htm
Server2005这个名字会在PHP 链接代码中用到。
mssql.so文件编译:
由于是软件仓库安装,并没有源代码。也没有php-mssql这样的软件包。所以编译mssql.so比较特殊,但也是可以。
下载php-5.3.3源码,老版本源码在这里下载:http://www.php.net/releases/
解压,进入目录:php-5.3.3/ext/mssql
#phpize
#./configure –with-php-config=/usr/bin/php-config –with-mssql=/usr/local/freetds
#make
#make install
make 的时候可能出现下面的错误:
/usr/include/php/main/spprintf.h:40: note: expected ‘char **’ but argument is of type ‘unsigned char **’
make: *** [php_mssql.lo] Error 1
修改 php-5.3.3/ext/mssql/php_mssql.h 24行增加一行:
#define PHP_MSSQL_API
此为bug,已经有人报告,见链接:https://bugs.php.net/bug.php?id=60267 编译成功后,会在/usr/lib/php/modules中出现mssql.so文件,64位的位于/usr/lib64/php/modules 中。在php.ini增加 extension=mssql.so 重启apache. php链接mssql 代码:
mssql_pconnect('Server2005',username,passwd); Good luck!