CentOs下php連mssql並配置unixODBC

目前,我實面了種情況下的安裝:
第一:系統安裝時已經安裝配置好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,以及幾種方式就參考www.freetds.org 中的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   http://www.ibiblio.org/pub/Linux/ALPHA/freetds/stable/
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/http://mirror.centos.org/centos/5.1/os/i386/CentOS/[/b[/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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章