php安装PDO_ODBC驱动

时间:2022-02-26 04:44:02

转自:http://blog.chinaunix.net/uid-10449864-id-2956897.html

因为项目需求,需要在linux下连接SQL2000,郁闷了一天才搞出来,下面写下安装过程。

LAMP配置环境采用的是nginx的环境,过程的安装就不啰嗦了,详细情况参看这篇blog:
http://blog.s135.com/post/366/


1、安装unixODBC软件包,如下:

unixODBC-2.2.11-7.1.i386.rpm
unixODBC-kde-2.2.11-7.1.i386.rpm
unixODBC-devel-2.2.11-7.1.i386.rpm

yum -y install unixODBC-*

2、从官网上下载PDO_ODBC扩展包

wget http://pecl.php.net/get/PDO_ODBC-1.0.1.tgz
tar -zxvf PDO_ODBC-1.0.1.tgz
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-odbc=unixODBC,/usr
make

 

该处报错:
/web/PDO_ODBC-1.0.1/pdo_odbc.c:34:1: 错误:未知的类型名‘function_entry’
function_entry pdo_odbc_functions[] = {
^
/web/PDO_ODBC-1.0.1/pdo_odbc.c:35:2: 警告:标量初始化带花括号

经查,是 function_entry的问题,修改 pdo_odbc.c中的代码,改为static const zend_function_entry(参考:http://blog.csdn.net/a600423444/article/details/7931257)

 


make install

在php.ini文件添加下面一行
extension = "pdo_odbc.so"

从 php.ini 检查 pdo_odbc 是否安装成功。


3、安装freetds

简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库!

tar -zxvf freetds-stable.tgz.tar
cd freetds-0.82/
./configure --prefix=/usr/local/webserver/freetds/ --with-tdsver=7.0 --with-unixODBC

make
make intall

如果你自己编译了libiconv软件包,估计要做个软连接
ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

测试下是否连接成功:
/usr/local/webserver/freetds/bin/tsql -S ip地址 -U 用户名
locale is "en_US.UTF-8"
locale charset is "UTF-8"
出现以上字符就说明编译成功了。


下面就可以进行配置freetds,可以通过图形界面,也可以通过字符界面,这里通过字符界面来配置:

[root@localhost etc]# more /usr/local/webserver/freetds/etc/freetds.conf
添加以下内容:

[sql2000]
        host = 192.168.100.100
        port = 1433
        tds version = 8.0   #必须使用8.0 ,才可以访问SQL Server 2000
        client charset = GBK  #客户端字符集,在使用isql 访问数据源时,如果检索的数据中中文为乱码,则需要添加并设置


[root@localhost etc]# more /usr/local/webserver/freetds/etc/locales.conf
添加以下内容:

[zh_CN]
language = Simplified Chinese
charset = GBK

根据数据库字符类型来定义连接字符,这里数据库是拉丁,所以采用了GBK。

[root@localhost etc]# more /etc/odbcinst.ini
添加以下内容:

[MySql2k]
Description     = ODBC for MySql2k
Driver          = /usr/local/webserver/freetds/lib/libtdsodbc.so
Driver64        = /usr/local/webserver/freetds/lib/libtdsodbc.so
Setup           = /usr/lib/libtdsS.so
Setup64         = /usr/lib/libtdsS.so
UsageCount      = 1
CPTimeout       =
CPReuse         =


[root@localhost etc]# more  /etc/odbc.ini
添加以下内容:

[mssql]
Description     = connect to sql2000
Driver          = MySql2k
Servername      = sql2000
Database        = 连接数据库
UID             = 连接用户名
PWD             = 连接密码
Port            = 1433


4、测试下连接情况

[root@localhost etc]# isq -v mssql(数据源) 用户名 密码
SQL>

出现以上信息就说明连接成功了。


参考文章
http://www.linuxdiyf.com/bbs/thread-76686-1-1.html

http://203.208.37.132/search?q=cache:aKc-dMO9j0IJ:dongbao.blog.sohu.com/rss+locales+freetds+chinese&cd=28&hl=zh-CN&ct=clnk&gl=cn&client=aff-cs-worldbrowser&st_usg=ALhdy286kKz3l17MAJcdB6siDxkNUP3YRA