`
mlm
  • 浏览: 43908 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php在Linux下同时连接Sybase和SqlServer

阅读更多

系统环境

OS:Redhat AS4.0

php:4.4.7

Apache:1.3.9

 

此环境为几年前配置的版本。

php和apache为源码编译。之前因为需要连接sybase所以php已经支持对sybase的支持。sybase版本15,编译参数:

--with-sybase-ct=/opt/sybase/OCS-15_0

 

最近程序需要连接SQL SERVER2000,所以要再次基础上增加mssql的支持。首先想到的是freetds。

 

官方网站:http://www.freetds.org/

用户手册:http://www.freetds.org/userguide 

下载源码按照网站说明编译。编译参数:

 

 

./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
make
make install
 

 

安装后执行/usr/local/freetds/bin/tsql -C,显示如下信息表示安装成功。

 

 

Compile-time settings (established with the "configure" script)
                            Version: freetds v0.91
             freetds.conf directory: /usr/local/freetds/etc
     MS db-lib source compatibility: yes
        Sybase binary compatibility: no
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 7.1
                              iODBC: no
                           unixodbc: no
              SSPI "trusted" logins: no
                           Kerberos: no

 

 

接下来重新编译php,在原编译参数下增加如下参数

 

 

--with-mssql=/usr/local/freetds
 

 

继续make && make install

 

在make install时发现提示如下警告信息:

 

警告信息 写道
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_connect in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_pconnect in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_close in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_select_db in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_query in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_free_result in Unknown on line 0
[10-Dec-2011 15:08:31] PHP Warning: Function registration failed - duplicate name - mssql_get_last_message in Unknown on line 0
.......

[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_fetch_array in Unknown on line 0
[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_fetch_object in Unknown on line 0
[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_data_seek in Unknown on line 0
[10-Dec-2011 15:08:34] PHP Warning: Function registration failed - duplicate name - mssql_field_seek in Unknown on line 0

 

 

没在意此提示,继续看phpinfo。发现mssql和sybase已经都支持了。

编写测试代码链接mssql。发现始终无法连接。开始google查找总结如下:

sybase和mssql最早同出一族在php中函数通用。同时在freetds中也发现可以使用mssql_connnect同时连接sybase和msssql数据库。为证实此说法,编写php文件打印sybse-ct模块函数列表。

 

 

<?php
print_r(get_extension_funcs('sybase-ct'));

 

 在执行页面发现打印出来sybase和mssql的所有函数。所以在php编译安装时会提示上面显示的那些警告信息。就是说sybase模块支持中已经增加了mssql的函数支持。那么是不是不需要mssql的模块是不是也可以连接mssql呢?接着重新编译php去掉php的mssql的模块。使用mssql函数,发现函数是能用。但是就是无法连接到指定的mssql。可能是我这里的配置问题。调整了很多参数还是连不上。

 

最终放弃了这个做法。使用freetds同时连接sybase和mssql。继续重新编译。写代码测试发现还是不行(2个不能同时都好使)。那么有没有第三种方法呢?google也没有发现,自己思考是否可以各自使用自己的函数,互不影响。sybase继续使用原来的/opt/sybase/OCS-15_0,sqlserver使用freetds呢。

 

开始尝试,首先要看php的sybase扩展模块代码。

打开/opt/php/php4.4.7/ext/sybase_ct/php_sybase_ct.c,终于有发现。

sybase扩展模块的所有函数注册都在这个文件中,找到如下记录:

 

 

PHP_FALIAS(mssql_connect, sybase_connect, NULL)
...
PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, NULL)

 

于是试着将mssql_开头的函数都注释掉。保存。

开始编译php,编译参数同时增加sybase和mssql的支持:

 

 

--with-sybase-ct=/opt/sybase/OCS-15_0
--with-mssql=/usr/local/freetds

 

继续

make && make install。

这次没有提示警告信息。暗喜!

编写测试代码测试。sybase和mssql都可以连接。终于成功了。

 

附:

sybase连接需要在/opt/sybase/interfac中配置服务器信息

mssql链接需要在/usr/local/freetds/etc/freetds.conf中配置服务器信息

 

 

分享到:
评论
3 楼 mlm 2013-07-18  
manbug 写道
freeTds不能同时连接sybase与sql server吗?是不是sybase还是要用sybase的client来连接,sql server 要用freetds来连接?

据我了解sybase要单独的client。直接连没试过。你可以试下。
2 楼 manbug 2013-07-16  
freeTds不能同时连接sybase与sql server吗?是不是sybase还是要用sybase的client来连接,sql server 要用freetds来连接?
1 楼 manbug 2013-07-16  
请问一下linux下的sybase客户端在哪下的啊!!

相关推荐

    Linux中文手册

    20.在Linux下访问MS SQL Server数据库 21.安装X windows for Intel 810 22.Web Database Step by Step(english) 23.Web Database Step by Step(中文) 24.Oracle8.05的简明安装和操作说明 25.Intel® 810 ...

    laravel5使用freetds连接sql server的方法

    系统ubuntu 16.04, 使用的PHP版本是7.0.30, sqlserver 2012, freetds为0.92 Laravel5.5和5.4都测试过了 什么是FreeTDS  简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一...

    Linux环境数据库管理员指南

    第5章 在Linux上安装和使用 Sybase 136 5.1 引言 136 5.2 安装 136 5.2.1 安装 SQL Server 11.0.3 137 5.2.2 安装可选的客户机软件 141 5.3 配置 142 5.3.1 配置Sybase Database Server 143 5.3.2 配置Sybase Backup...

    CentOS 6.3下给PHP添加mssql扩展模块教程

    由于MSSQL和Sybase使用的恰是TDS协议,所以在Linux中可以用FreeTDS连接MSSQL,下面简绍使用php的db-lib连接Microsoft SQL Server 2005数据库. LINUX操作系统: centOS6.3 64bit(安装了系统默认开发包) APACHE: ...

    《SQL数据库管理工具》(Richardson Software RazorSQL)v5.1.1/含注册机

    软件简介:RazorSQL 是数据库查询工具、SQL的编辑、数据库管理工具,可以通过ODBC,JDBC连接数据库,已经证实可以使用的数据库种类,达到了29种. RazorSQL is an SQL query tool, database browser, SQL ...

    PHP网站开发语言技术特点及优势.docx

    2、数据库支持:PHP 支持多种主流与非主流的数据库,如:、Adabas D、DBA、dBase、 dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、 Sybase、 ODBC、 oracle、 oracle 8、 ...

    Web Server Plus for IIS v1.0.0.0.zip

    WSPlus就是MysqlPHPForiis集成安装环境,即在window下的php和mysql的服务器软件。PHP扩展,鼠标点点就搞定,再也不用亲自去修改配置文件了,WSPlus它会去做。再也不用到处询问php的安装问题了,WSPlus一切都搞定了。...

    IT网络技术书(201005300858).part2.rar

    SQL SERVER 2000/2005 MySQL & PostgreSQL Sybase DB2 C/C++ .Net Java Php Web开发 PowerBuilder Web及应用服务器 Mail服务器 其他常用服务器软件 软考论坛 主流IT厂商...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同时又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的...

    基于J2EE框架的个人博客系统项目毕业设计论...

    Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同时又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的...

    SOAOFFICE - 微软 OFFICE 中间件

    SQL Server,Oracle,MySQL,DB2,Sybase等),以及任意WEB编程语言和Web架构(C#,Java,VB.Net,PHP,DOMINO,JSP,ASP,J2EE,ASP.NET,Ajax等)。SOAOFFICE同时支持C/S方式的编程和其他支持ActiveX的容器,您...

Global site tag (gtag.js) - Google Analytics