CentOs下php连mssql并配置unixODBC

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
前言:
    换了工作后,一直忙于LINUX系统架构方面的事情,也经历了从不太懂的痛苦到较为熟悉点的沾沾自喜。工作的过程中,一直把百度做为自已的首选搜索引擎。可后来,却不得不而且最终只用了谷歌。因为此给予我的帮助更好更多。
   
    OK, 扯回话题,公司现在用的数据库比较杂,MS SQL、ORACLE、MYSQL都有在用,之前使用WINDOWS+PHP的环境,这种情况下使用PHP连MS SQL是比较容易的,但性能上却比之LAMP差了不少。由此,新工作的主要的事情就是系统及WEB配置的迁移。

       但 是LAMP环境下,PHP连MS SQL却有不少的问题。公司的单点登陆问题就实现不了。更不能体现LAMP较之WAMP的优势。怎么办,BAIDU用吧。却发现很多中文的解决方案,不是 版本较老,就是实现不了。后来,选择了GOOGLE,找到了很多E文的解决方案。试着做了,虽说走了些弯路,但最终还是实现了我的需求.      期 间,参考了提供驱动的freetds官方网站,很仔细的阅读了文档,以及一些前人的解决方案。在些感 谢他们。
     
目前,我实面了种情况下的安装:
第一:系统安装时已经安装配置好LAMP。这时重新编译PHP环境相当困难。
          我使用RPM 包和TAR包两种方式来安装环境。并不改动PHP的安装及配置,但只能使用ODBC连接MS SQL(数据源)。

第二:系统安装后,使用TAR包安装配置LAMP环境。这时可以重新编译PHP。
        我使用TAR包来安装,且有重新编译PHP和不重新编译PHP的两种方案。重新编译可以实现直接连接和ODBC连接两种方式。不重新编译可以实现ODBC连接MS SQL(数据源)




    这 篇博文,以第一种情况,且使用TAR包的方式来安装freetds,以rpm安装unixODBC-devel及unixODBC。使用ODBC连接MS SQL(数据源)。(要想了解更多的关于php下如何连接MS SQL,以及几种方式就参考[url]www.freetds.org[/url]中的HOWTO文档,我接触到的使用了两种一是直接连接,一是odbc。)

一、安装环境
1、CentOs 5.1 + FreeTds0.64.tar.gz + unixODBC-2.2.11-7.1(除了FreeTds是额外的包,其它的都可以使用YUM来安装,或是系统安装时就装好)
2、最好也安装上XWINDOWS,我安装的是GNOME的,因为配置DSN(数据源)时会用上。当然,你也可以在文本界面中配置。


二、部分包的安装及版本显示
1、[root@rpm-mssql ~]# rpm -aq |grep httpd
system-config-httpd-1.3.3.1-1.el5
httpd-2.2.3-11.el5_1.centos.3
httpd- devel-2.2.3-11.el5_1.centos.3    (这个包包含 Apache HTTP 服务器的包含文件、头文件和 APXS 工具程序。如果你打算载入额外的模块(除了该产品所提供的),你需要它。 嘿嘿,如果装PHP时,不要使用TAR包的HTTPD,那就可以使用--with-apxs2=/usr/sbin/apxs.关于此的安装另文说明)
httpd-manual-2.2.3-11.el5_1.centos.3

2、[root@rpm-mssql ~]# rpm -aq |grep php
php-cli-5.1.6-15.el5
php-common-5.1.6-15.el5
php-5.1.6-15.el5
php-odbc-5.1.6-15.el5
php-pdo-5.1.6-15.el5
php-pear-1.4.9-4
php-mysql-5.1.6-15.el5
php-ldap-5.1.6-15.el5
你并不需要安装如此之多,根据自已的需求,安装。因为我是系统安装时定制安装成LAMP环境的。

3、[root@rpm-mssql ~]# rpm -aq |grep unixODBC
unixODBC-devel-2.2.11-7.1 (这个包的作用同httpd-devel,一定要装上啊,安装freetds.tar.gz时要用上的,它会自动寻找unixODBC的安装路径的。否则有可能编译出错。)
unixODBC-2.2.11-7.1
unixODBC-kde-2.2.11-7.1(同志们,这个要装啊,本来是KDE桌面下的图形配置ODBC数据源的工具。呵呵,在GNOME中也能用的。)

OK,mysql的安装包我不多说,因为这里主要是使用ODBC(DSN数据源)在LAMP环境下PHP连MS SQL的。

4、安装要求的包:
freetds-0.6.tar.gz   [url]http://www.ibiblio.org/pub/Linux/ALPHA/freetds/stable/[/url]
unixODBC-kde-2.2.11-7.1
unixODBC-devel-2.2.11-7.1.i386.rpm     yum install -y unixODBC-devel [url]http://mirror.centos.org/centos/5.1/os/i386/CentOS/[/url]


三、安装、测试和配置:
1、安装freetds(均是在root用户下,如果你在其它用户下,记得在运行make install时su - root)
注:在系统安装时要安装上GCC编译器等开发工具及库。不过,在CentOs下少什么就用yum来安装啦。
注:同样的条件可以安装在REDHAT AS5.1 及AS5下。

[root@rpm-mssql freetds-0.64]# tar zxvf freetds-0.64.tar.gz
[root@rpm-mssql ~]# cd freetds-0.64
[root@rpm-mssql freetds-0.64]# ./configure --with-tdsver=7.0 --with-unixODBC

以下的要在root用户下执行,尤其是make install
[root@rpm-mssql freetds-0.64]# make;make install
[root@rpm-mssql freetds-0.64]# make clean
ok,现在已安装好啦。这时会在/usr/local/etc生成freetds.conf文件
[root@rpm-mssql freetds-0.64]# cd /usr/local/etc
[root@rpm-mssql etc]# ll
total 12
-rw-r--r-- 1 root root 3572 Jan 24 19:13 freetds.conf
-rw-r--r-- 1 root root  362 Jan 24 19:13 locales.conf
-rw-r--r-- 1 root root  219 Jan 24 19:13 pool.conf

可以使用ODBCConfig来配置啦
注,在安装unixODBC unixODBC-devel后,就会在/etc生成两个文件odbc.ini odbcinst.ini:
[root@rpm-mssql freetds-0.64]# ll /etc/od
odbc.ini             odbcinst.ini.rpmnew  oddjobd.conf.d/
odbc.ini.rpmnew      oddjob/              
odbcinst.ini         oddjobd.conf     

2、测试和配置
A、安装好freetds后,先使用tsql来测试下:
[root@rpm-mssql etc]# /usr/local/bin/tsql -S 211.103.155.xxx -U sa Password:password (xxx是三个数字,为了安全,变了。而:后的password为真实的SA的密码)
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password:   (这里还要再输入一次密码)
1> 
如果你足够幸运,呵呵,就会出现 “1>” 说明你之前的编译正确啦。  
接下来就开始真正的进入正题啦,配置freetds.conf

B、编辑freetds.conf(经测试,这个步骤可以省去。因为装freetds的目的是为了它的驱动。实际上这也暗示着大家采用rpm包安装时需要做些什么啦)

[root@rpm-mssql etc]# vi /usr/local/etc/freetds.conf
加入如下代码,
[MySql2k]  (在FreeTds0.64版本中,这个参数很重要。在“System DSN”中,需要用的到。这也是和之前版本的一些差别)
        host = 211.103.155.xxx (这个是装有sql server 2k的服务器IP,连SQL 2K5也能行)
        port = 1433
        tds version = 8.0

C、配置/etc/odbc.ini   /etc/odbcinst.ini (注,为了更直观,我使用X视窗的方式下图形配置,当然,我也会把经过图形配置后的ini文件拷配过来)
这里需要用到ODBCConfig  /usr/bin/ODBCConfig
[root@rpm-mssql etc]# /usr/bin/ODBCConfig
ODBCConfig: cannot connect to X server 

D、切换到X WINDOWS,前面说过,使用的是GNOME,各位亦可以使用KDE。君不见unixODBC-kde就是为KDE专门做的嘛。
[root@rpm-mssql etc]# /usr/bin/ODBCConfig后,出现如下图,图示中有说明。但要声明的是,我使用的FreeTds的版本是0.64的,和前一版本0.63有 些使用上的差别。主要是"Servername"的变化,以及"Setup"的变化。在接下来的一系列图示中,会分别说明。


      安装FreeTds的目的,就是为了提供PHP连接MSSQL的驱动的。上面所有的动作,就是为此做准备的。驱动有了装载的路径,就要增加数据源,以使连接MSSQL成功。

接下来的E,F就是重点的以图文并茂的方式来说明的。
E、图形设置Driver的过程,就是配置/etc/odbcinst.ini的过程。
freetds0.64版本增加了对64位数据库的支持。


下面的是图形配置后的odbcinst.ini的文件,其中MySql2k是新增加地:
[root@rpm-mssql ~]# cat /etc/odbcinst.ini
[PostgreSQL]
Description             = ODBC for PostgreSQL
Driver          = /usr/lib/libodbcpsqlS.so
Driver64                = /usr/lib
Setup           = /usr/lib
Setup64         = /usr/lib
UsageCount              = 1
CPTimeout               = 
CPReuse         = 

[MySql2k]
Description             = v0.64 with Protocol v8.0
Driver          = /usr/local/lib/libtdsodbc.so
Driver64                = /usr/local/lib/libtdsodbc.so
Setup           = /usr/lib/libtdsS.so
Setup64         = /usr/lib/libtdsS.so
UsageCount              = 1
CPTimeout               = 
CPReuse         = 

F、DSN数据源建立及注意事项:
图形设置"System DSN"的过程,是配置/etc/odbc.ini文件的过程:



下面的是图形配置"System DSN"后,odbc.ini的文件,如果没有或是不想安装X 视窗的话,直接设置。
[root@rpm-mssql ~]# cat /etc/odbc.ini
[mssql]
Description             = MySql2k
Driver          = MySql2k
Servername              = MySql2k   (这里,不要设置IP地址什么的,要和FREETDS.CONF里的设置一样,至少我试的就是如此,在FREETDS0.63中并没有此现象。)
Database                = 
UID             = sa
PWD             = 
Port            = 1433

G、isql 测试:

成功了,呵呵,实际上这篇文章也可以就此打住啦。不过。还是实测下PHP连MS SQL的效果吧

H、php页面测试
[root@rpm-mssql ~]# vi /var/www/html/phpmssql.php
<?
$conn_beidabiz=odbc_connect("mssql",sa,"password"); ###password,变成自己相应的直实密码。####
{
echo "ok";
}
?>


全文到些完结,下一篇估计写下全部是使用rpm包来安装的方式配置php连MSSQL.








 本文转自 rickyfang 51CTO博客,原文链接:http://blog.51cto.com/rickyfang/125837,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
20天前
|
Linux 网络安全 开发工具
Centos6.5安装并配置Telnet服务
该内容是一个关于如何安装配置Telnet服务的教程。首先,通过yum安装vim、xinetd、telnet和telnet-server。接着,修改/etc/xinetd.d/telnet配置文件,将disable改为no,并设置访问限制(如限定特定网段和时间)。关闭防火墙,重启服务。创建测试用户后,分别使用CentOS和Windows的Telnet客户端进行连接测试,显示成功,实验完成。
25 1
|
7天前
|
Linux
CentOS 7 配置yum阿里源 (三步即可)
CentOS 7 配置yum阿里源 (三步即可)
|
11天前
|
应用服务中间件 PHP nginx
php如何实现检测nginx配置的正确性
请确保在执行此操作时,PHP有足够的权限来执行Nginx命令和访问Nginx配置文件。另外,将上述代码嵌入到您的应用程序中时,要注意安全性,以防止潜在的命令注入攻击。
50 3
|
14天前
|
运维 JavaScript Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,Php环境,配置取消禁止函数exec如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
32 4
|
18天前
|
网络协议 Java 应用服务中间件
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
11 0
|
20天前
|
Linux 网络安全 开发工具
Centos7 sendmail服务安装与配置
该文本描述了在Linux系统中设置邮件服务的步骤。首先,启用httpd的邮件发送功能,然后安装sendmail、sendmail-cf和dovecot。接着配置/sendmail.mc,设定IP和邮件域名。在dovecot配置文件中启用imap、pop3和lmtp协议,取消明文认证限制,设定mail_location,并开启SSL。创建用户mail3和mail4,给予相应权限。停止postfix服务,编辑访问控制、提交配置、本地主机名等文件。最后,重置sendmail、dovecot和saslauthd服务。
45 0
|
20天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置PXE服务
PXE是Intel开发的预启动执行环境,允许工作站通过网络从远程服务器启动操作系统。它依赖DHCP分配IP,DNS服务分配主机名,TFTP提供引导程序,HTTP/FTP/NFS提供安装源。要部署PXE服务器,需关闭selinux和防火墙,安装dhcpd、httpd、tftp、xinetd及相关服务,配置引导文件和Centos7安装源。最后,通过syslinux安装引导文件,并创建pxelinux.cfg/default配置文件来定义启动参数。
56 0
|
20天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置postfix服务
安装CentOS7的Postfix和Dovecot,配置Postfix的`main.cf`文件,包括修改完全域名、允许所有IP、启用邮箱等。然后,配置Dovecot的多个配置文件以启用auth服务和调整相关设置。重启Postfix和Dovecot,设置开机自启,并关闭防火墙进行测试。最后,创建邮箱账户并在Windows邮箱客户端中添加账户设置。
17 0
|
20天前
|
网络协议 Linux 网络安全
Centos7 配置DNS服务
该教程指导配置DNS服务器:首先通过yum安装bind和cach件,然后修改IP设置。接着,编辑/etc/named.conf,将第13行和21行的参数改为&quot;any&quot;。在/etc/named.rfc1912中更新正向和反向域名。创建正向解析文件/var/named.localhost和反向解析文件/var/named.loopback,按指定格式添加解析记录。最后,重启服务,确保防火墙关闭,通过nslookup检查DNS配置效果。
26 1
|
20天前
|
Linux 网络安全
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
26 0