Linux下PHP支持MSSQL(SQL Server2000)
http://blog.csdn.net/wl3115/archive/2009/02/20/3910282.aspx
FreeTDS官方网站:http://www.freetds.org 当前版本0.82
1. 编译FreeTDS
# tar zxvf freetds-0.82.tar.gz
# cd freetds-0.82
//--with-tdsver=8.0是指安装tds 8.0版本(如果没有加这个参数,则按照默认编译为5.0。5.0连接数据库的端口是4000,而不是SQLServer的1433)
# ./configure --prefix=/usr/local/freetds --with-tdsver=8.0
# make
# make install
2. 编译PHP
使PHP支持MSSQL,可以使用两种方式,一种是直接编译进PHP,一种是编译成PHP可载入的模块。如果还没有编译安装PHP,建议使用前一种方式,因为这样PHP的执行速度快。如果已经安装了PHP,又嫌重新编译PHP麻烦,用后一种方式吧。
(1) 编译进PHP
如何编译PHP,请参考 php配置GD库(http://blog.csdn.net/wl3115/archive/2008/03/05/2148571.aspx)。要增加对MSSQL的支持,只要在编译参数上加上--with-mssql=/usr/local/freetds即可。
(2) 编译成模块
//进入php的源码目录、MSSQL模块源码目录
# cd /home/wxw/gd/php-5.2.5/ext/mssql/
//生成编译配置文件
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
# make
# make install
在编译配置的时候可能会遇到找不到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
//将mssql.so添加到php.ini,路径在安装后会有提示
# vim /usr/local/php/lib/php.ini
extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/mssql.so"
# /usr/local/apache2/bin/apachectl restart
写个phpinfo()查看一下有没有mssql扩展
3. 中文问题
//在php.ini文件中加入mssql.charset = "GBK",读取正常,添加的时候用utf-8转gbk
# vim /usr/local/php/lib/php.ini
mssql.charset = "GBK"
4. 客户端测试(没多大意义)
//配置数据库连接信息,不用设置编码,就可以显示中文
# vim /usr/local/freetds/etc/freetds.conf
[sqlserver]
host = 10.0.0.11
port = 1433
tds version = 8.0
//参数查看# tsql --help
# /usr/local/freetds/bin/tsql -H 10.0.0.11 -p 1433 -U ts -P tsst
1> use test
2> go
1> select * from tb
2> go
1> quit
5. 顺便提一下windows环境php中mssql扩展
1 把php.ini中的"extension=php_mssql.dll"前面的分号去掉
2 然后安装mssql的客户端或者复制ntwdblib.dll到system32中。(php压缩包里有)
然后在phpinfo()函数中看看没有mssql扩展。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wl3115/archive/2009/02/20/3910282.aspx