|
提出問(wèn)題
前幾天做了一個(gè)非常奇怪的項(xiàng)目,我公司開(kāi)發(fā)了一套基于中國(guó)聯(lián)通SGIP協(xié)議的SP端短消息服務(wù)軟件,提供聯(lián)通130短信服務(wù)。這套系統(tǒng)是Windows 2000下的,數(shù)據(jù)庫(kù)采用的是微軟SQLServer2000,并且已經(jīng)正常運(yùn)行了一段時(shí)間。而最近由于要在WEB上提供短消息用戶的一些信息,就需要從WEB上讀寫(xiě)SQLServer數(shù)據(jù)庫(kù),本來(lái)SQLServer數(shù)據(jù)庫(kù)的最佳搭檔應(yīng)該是微軟IIS ASP服務(wù)端腳本,但我公司一向認(rèn)為IIS+ASP的穩(wěn)定性和安全性都不盡如意,希望能夠在Linux下用PHP腳本讀寫(xiě)SQLServer。 分析問(wèn)題
本來(lái)PHP腳本讀寫(xiě)SQLServer是沒(méi)有什么問(wèn)題的,在Apache for windows和Windows IIS下可以工作的很好,一般可以通過(guò)ODBC或SQLServer Client連接,這都是Windows下面現(xiàn)成的。但是在Linux下面沒(méi)有現(xiàn)成的ODBC和SQLServer Client,需要我們自己安裝。 解決問(wèn)題
一、相關(guān)軟件 freetds 來(lái)源:ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/freetds-0.53.tgz 這個(gè)軟件能夠用Linux和Unix連接MS SQLServer和Sybase數(shù)據(jù)庫(kù)。 二、安裝配置步驟 第一步:編譯安裝freetds: 得到freetds-0.53.tgz后 cp freetds-0.53.tgz /tmp/. (拷貝freetds包到/tmp目錄) cd /tmp (進(jìn)入目錄) tar zxvf freetds-0.53.tgz (解壓) cd freetds-0.53 (進(jìn)入解壓后目錄) ./configure –prefix=/usr/local/freetds --with-tdsver=7.0 gmake (生成Makefile,我試驗(yàn)過(guò),make也可以) gmake install (安裝) 關(guān)于上面configure我想說(shuō)一下,--prefix=/usr/local/freetds是指安裝到/usr/local/freetds這個(gè)目錄中,--with-tdsver=7.0是指安裝tds 7.0版本(最開(kāi)是我沒(méi)有加這個(gè)編譯參數(shù),結(jié)果按照默認(rèn)編譯為5.0。5.0連接數(shù)據(jù)庫(kù)的端口是4000,不是SQLServer的1433) 第二步:重新編譯PHP4 ./configure [--with-apxs --with-mysql...] --with-sybase=/usr/local/freetds(請(qǐng)注意是sybase) make make install 第三步:配置freetds vi /usr/local/freetds/etc/freetds.conf 具體配置見(jiàn)該文件中的說(shuō)明 例: (典型配置) [sqlserver] host = sql_server_name_or_host_ip (你的SQLServer機(jī)器名字或者IP地址) port = 1433 tds version = 7.0 在這個(gè)配置文件中可以配置Windows域登陸或者SQLServer賬號(hào)登陸兩種方式 第四步:配置php.ini文件 找到 ;extension=mssql70.so 將注釋;去掉成 extension=mssql70.so 第五步:在php中建立數(shù)據(jù)庫(kù)連接 $link=mssql_connect("sqlserver",$your_username,$your_password) or die (“can’t Connect to Database”); echo $link; 在瀏覽器中運(yùn)行上面腳本, 如果你得到一個(gè)link號(hào)那么恭喜,你已經(jīng)配置好了,如果出現(xiàn)Call to undefined function: mssql_connect() 那說(shuō)明仔細(xì)看上面的安裝配置過(guò)程看你哪一步?jīng)]有對(duì)。 注意:sqlserver名稱是在/usr/local/freetds/etc/freetds.conf中定義的host參數(shù),如果你寫(xiě)的IP地址,就是IP地址。 其他數(shù)據(jù)庫(kù)操作參考相關(guān)mssql函數(shù) 注意,在sql語(yǔ)句中不支持中文!!! 第六步:調(diào)試 如果出現(xiàn)不能連接,請(qǐng)?jiān)趂reetds配置文件中找到;dump file = /tmp/freetds.log這一行,注釋掉前面的分號(hào),再執(zhí)行一下測(cè)試腳本,察看/tmp/freetds.log文件,它可以告訴你很多出錯(cuò)的信息幫助你排除問(wèn)題。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!