php-5.3.3 mssql support

发布于: 2013年10月15日

系统环境:

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!

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

浙ICP备18056264号-1