CentOs下php連mssql並配置unixODBC
前言:
換了工作後,一直忙於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”;
}
?>
換了工作後,一直忙於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 7 下安裝PHP環境並且配置Nginx支援php-fpm模組CentOSPHPNginx
- windows下php5.3連結mssql2008WindowsPHPSQL
- CentOS7上安裝並配置Nginx、PHP、MySqlCentOSNginxPHPMySql
- php連線mssql測試檔案PHPSQL
- 用php在linux下連線mssql2000(轉)PHPLinuxSQL
- CentOS 7.0下面安裝並配置SparkCentOSSpark
- CentOS 下多版本 PHP 的安裝與配置CentOSPHP
- CentOS 配置 PHP 環境CentOSPHP
- linux下php 加裝mssql模組薦LinuxPHPSQL
- centos7下svn伺服器搭建並配置httpCentOS伺服器HTTP
- centos7 yum下載並安裝jdk並配置環境變數CentOSJDK變數
- Centos7下配置PHP + MySQL + Nginx開發環境CentOSPHPMySqlNginx開發環境
- centos php-fpm nginx配置CentOSPHPNginx
- CENTOS下配置DNSCentOSDNS
- Windows環境下嘗試安裝並配置PHP PEARWindowsPHP
- PHP安裝Xdebug擴充套件並配置PHPstorm除錯(Centos、Windows)PHP套件ORM除錯CentOSWindows
- 在Linux下使用perl透過unixODBC連線SQLServer2000(轉)LinuxSQLServer
- CentOS5+mysql+php的配置CentOSMySqlPHP
- nginx+php配置在centos 6NginxPHPCentOS
- CentOS下配置ODBC連線MySQL資料庫 V2.0CentOSMySql資料庫
- Centos下搭建LAMP+PHPCentOSLAMPPHP
- unixODBC without the GUIGUI
- Linux下連線MSSQL之安裝FreeTDSLinuxSQL
- Linux下FreeTDS訪問MSSQL Server的配置LinuxSQLServer
- CentOS 下 sftp 有人能連有人不能連CentOSFTP
- centos7下安裝phpCentOSPHP
- CentOS下安裝配置cmakeCentOS
- CentOS使用配置VNC遠端連線CentOSVNC
- CentOS7.4安裝php配置php-fpm服務CentOSPHP
- Centos7下安裝Sql*Plus並連線遠端Oralce伺服器CentOSSQL伺服器
- CentOS-7-64bit 配置Apache + MySQL + PHPCentOSApacheMySqlPHP
- centos下升級php5.3到php5.6CentOSPHP
- Centos6.2下php-5.2.17安裝配置XCache3加速器CentOSPHP
- CentOS7安裝Docker並配置映象加速CentOSDocker
- Centos下使用php呼叫shell指令碼CentOSPHP指令碼
- CentOS下tomcat安裝配置CentOSTomcat
- CentOS下tftp 安裝配置使用CentOSFTP
- CentOS 7 配置 VNC 遠端桌面連線CentOSVNC