系统环境
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中配置服务器信息
分享到:
相关推荐
本文档详细介绍了在Linux操作系统下配置ODBC数据源,从而实现与SQL Server的连接方法及步骤。 #### ODBC数据源简介 ODBC(Open Database Connectivity)是一种开放标准的应用程序接口(API),由微软开发,用于在...
### Linux环境下通过PHP连接SQL...通过以上步骤,可以在 Linux 环境下成功地通过 PHP 连接到 SQL Server 2005 数据库。需要注意的是,在实际部署过程中可能还需要根据具体环境调整参数配置,以确保连接稳定性和安全性。
在完成安装和配置后,你可以使用FreeTDS提供的库在Linux环境中编写应用程序,或者通过ODBC接口连接到SQL Server,实现跨平台的数据访问。对于开发人员来说,这为在Linux环境下处理SQL Server数据提供了便利。同时,...
如果你的应用同时需要连接MySQL和SQL Server,可以通过在Model中指定`$connection`属性来选择使用哪个数据库,例如: ```php protected $connection = 'mssql'; protected $table = 'EMPLOYEE'; ``` 这样,模型将...
通过以上步骤,您应该已经成功地在 Linux ASE4 系统上安装了 SYBASE 12.5 数据库系统,并构建了一个包含 Apache 2.0.55 和 PHP 5.1.1 的完整 Web 开发环境。这个过程涉及到了许多细节,包括软件包的安装、环境变量的...
此版本着重提升了与RedHat 6.0的兼容性,尽管RedHat 5.x和6.x是主要的支持平台,但Sybase也在努力使其适应其他如Caldera、OpenLinux和SuSE的官方发行版。 SQL Anywhere Studio 6.0.3包含了ASE(Adaptive Server ...
### Linux下PHP支持MSSQL(SQLServer2000) #### 概述 在Linux环境下,为了让PHP能够访问Microsoft SQL Server数据库(以下简称MSSQL),需要进行一系列的配置与安装工作。本文将详细介绍如何在Linux系统中配置PHP以...
在Linux环境下,PHP需要连接到Microsoft SQL Server数据库时,通常会使用FreeTDS库作为中间件。本篇文章将详细介绍如何在Linux系统上配置PHP以支持mssql,以及如何解决可能出现的乱码问题。 首先,我们需要了解...
总的来说,“freetds-0.82RC4.tar.gz_FreeTDS_sqlserver”这个压缩包是为Linux/Unix用户提供连接Windows SQL Server的桥梁,通过ODBC驱动实现了跨平台的数据访问,对于需要在非Windows环境下操作SQL Server的开发者...
"PHP连接SQLServer的扩展 测试过 已经配置成功"这部分描述意味着这个压缩包可能包含了一些配置和测试过程中的记录,可能包括配置文件示例、错误日志或连接测试脚本。这些文件对于初学者来说是非常有价值的参考资料,...
FreeTDS是一个开源项目,它提供了与多种Sybase SQL Server和Microsoft SQL Server版本的连接能力。以下是一个详细的配置过程,旨在解决PHP访问SQL Server时的连接及乱码问题。 首先,你需要从FreeTDS的官方网站...
这个压缩包包含的主要是"Freetds"的源代码和相关文件,Freetds是一个允许UNIX和Linux系统与Microsoft SQL Server及Sybase数据库进行通信的软件。 描述中的"apache php mssql"表明我们讨论的是一个Web服务器(Apache...
首先,我们需要安装freetds,这是一个用于连接Sybase和Microsoft SQL Server的库。安装时应避免安装0.82版本,因为该版本可能会导致编译失败。进入freetds源代码目录,执行以下命令进行编译和安装: ``` ./...
在Linux系统中,微软的SQL Server(MSSQL)数据库并不是原生支持的,但通过第三方工具和技术,我们可以让Linux与MSSQL进行交互。这个压缩包“linux支持mssql数据库安装包”提供了在Linux环境下安装和使用MSSQL所需的...
FreeTDS是一个开源的软件项目,它为Unix和Linux系统提供了连接Microsoft SQL Server和Sybase数据库的能力。这个软件包名为“freetds-0.95.80.tar.gz”,表明这是FreeTDS的一个版本0.95.80的源代码压缩包,通常以`....
标题中的“freetds最新的版本”指的是FreetDS这一开源软件的最新迭代,它是一个用于在Linux和其他类Unix系统上连接Microsoft SQL Server和Sybase数据库的库。FreetDS允许开发者在非Windows环境下与这些数据库进行...
**描述:**“freetds1.0 是一个可以直接在Linux操作系统上使用的命令行工具,用于连接和操作SQL Server数据库。它已经预先编译完成,用户可以直接安装并投入使用,无需进行复杂的编译过程。” **详细知识点:** 1....
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 ...