转载请注明出处 作者:阿东 来源:代码人生 www.code-life.com

Linux下使PHP支持MSSQL(SQL Server),需要先安装FreeTDS。
PHP官方网站:http://www.php.net 当前版本5.26
FreeTDS官方网站:http://www.freetds.org 当前版本0.82

1. 编译FreeTDS

下载FreeTDS并解压,进入该目录。
./configure --prefix=/usr/local/freetds
make
make install

2. 编译PHP

使PHP支持MSSQL,可以使用两种方式,一种是直接编译进PHP,一种是编译成PHP可载入的模块。如果还没有编译安装PHP,建议使用前一种方式,因为这样PHP的执行速度快。如果已经安装了PHP,又嫌重新编译PHP麻烦,用后一种方式吧。

(1) 编译进PHP

如何编译PHP,请参考LAMP环境配置(http://www.code-life.com/read.php?50)。要增加对MSSQL的支持,只要在编译参数上加上--with-mssql=/usr/local/freetds即可。

(2) 编译成模块

cd /path/to/php/source 进入PHP源码目录
cd ext/mssql 进入MSSQL模块源码目录
/usr/local/php/bin/phpize 生成编译配置文件
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds
make
make install
编译完成生成mssql.so,修改php.ini,将该模块载入:
extension="/path/to/extension/mssql.so"

!! IMPORTANT 找不到FreeTDS编译失败的解决

在编译配置的时候可能会遇到找不到FreeTDS的错误:
configure: error: Directory /usr/local/freetds is not a FreeTDS installation directory
按照官方的解释(http://www.freetds.org/news.html),PHP检测一些文件以确定FreeTDS是否安装,由于新版的FreeTDS不再安装这些文件,导致PHP编译失败。只需建立两个空文件即可:
touch /usr/local/freetds/include/tds.h
touch /usr/local/freetds/lib/libtds.a
Tags: , , ,
GUEST
2009/03/19 17:14
我编译mssql模块这种方法(第二种)没有成功,可能少什么参数吧,按照第一种方法又简单又快,就成功了。注意这样编译的时候要带上Configure Command里面的参数。多谢楼主分享。
GUEST
2008/11/04 15:08
非常感谢您,我已经成功了,谢谢谢谢!!!grin
guest
2008/10/29 14:58
非常感谢,我已经按照您介绍的方法,编译出了mssql.so这个模块,我也按照你上面介绍的方法,修改了php.ini,但现在我用PHP探测器检测后,发现SQLSERVER这个组件仍然显示未安装,难道装载mssql.so这个模块还需要一定的方法和步骤,仅仅修改php.ini这个配置文件是不够的吗?   请不吝赐教,不胜感谢!
xudongding 回复于 2008/10/31 13:09
首先是看一下你的PHP配置文件在什么位置,通过phpinfo()函数可以看到Loaded Configuration File的位置。打开这个文件,添加一行:
extension="/mssql.so的路径/mssql.so"
添加后一定要重启Apache,否则不会生效的。
成功后会在phpinfo页中看到MSSQL这一项。
guest
2008/10/27 12:28
能否重新给个能正确执行的编译命令序列?您上面给的编译步骤无法通过啊

/usr/local/php/bin/phpize 生成编译配置文件
上面这句是什么意思,无法执行啊


./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds
上面这句,我的PHP都没有安装,怎么指定PHP的安装路径?

另想请教下,是不是一定要先安装好了PHP以后,才可以编译出mssql.so这个模块?

请详细指点下,谢谢
xudongding 回复于 2008/10/28 10:14
上面写的很清楚啊,有两种方法,一种是编译进PHP,一种是编译成模块。编译进PHP很简单,先编译FreeTDS,然后在PHP编译时候加个参数--with-mssql=/usr/local/freetds。要编译成模块PHP必须已经编译安装成功,phpize是在PHP编译安装后生成的。真累,不知道是不是我的表达有问题呢?
guest
2008/10/24 12:53
cd /path/to/php/source 进入PHP源码目录
cd ext/mssql 进入MSSQL模块源码目录
/usr/local/php/bin/phpize 生成编译配置文件
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds
make
make install
编译完成生成mssql.so,修改php.ini,将该模块载入:
extension=\"/path/to/extension/mssql.so\"


请修正或解释下上面的命令,好吗?根据你上面的命令,无法成功编译生成mssql.so这个模块,或者您能否直接提供mssql.so这个文件的下载?谢谢!
xudongding 回复于 2008/10/24 15:48
这个模块需要编译的,Linux不像Windows,编译的环境不一样把so文件拿过来也不能用。编译失败有很多种原因,不能成功编译最好附上错误代码以便排查。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写