ubuntu系統下配置php支援SQLServer資料庫

來源:互聯網
上載者:User

標籤:

最近在做一個項目,該項目的資料庫是微軟公司的的SQLserver ,資料庫安裝在另一台windows伺服器上,而項目卻部署在ubuntu server上。那麼這樣就會涉及到項目在linux上如何連結SQLserver ?在這裡我用的是freetds 來做連結資料庫的中介軟體,下面是我實踐的步驟:

1.下載最新的freetds ,訪問 http://www.freetds.org/, 或者在 ubuntu上用 wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz 下載穩定的版本。

2.安裝freetds 和 配置 freetds

cd 進入freetds所在目錄,

$ tar zxvf freetds-stable.tgz(解壓)
$ ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib

$ make
$ make install

configure 步驟和 make 步驟可以用 普通使用者的許可權來完成,install 步驟最好用root 使用者,或者是對/usr/local/ 目錄有讀寫的許可權的使用者.

配置:

編輯/etc/ld.so.conf,在其中插入一行:
/usr/local/freetds/lib
然後運行以下指令使更改生效:
ldconfig

編輯freetds 的設定檔,設定資料庫串連資訊

vim /usr/local/freetds/etc/freetds.conf 如下:

在這裡找到egServer70節點,配置你資料所在的伺服器位址,一般連接埠不用改,除非資料庫訪問用的是其它連接埠。注意一般這個設定檔中是沒有 client charset 的選項的,

需要手動添加,防止資料庫亂碼。這裡設定成 utf8 , 這個編碼要和資料庫編碼一致。修改完成之後就儲存退出。然後驗證這個配置是否是ok 的。

cd /usr/local/freetds/bin/

./tsql -H your SQLserver addr -p 1433 -U 使用者名稱 -P 密碼 -D 資料庫

注意你的密碼有特殊字元例如 !和 # 之類的,那麼需要加上轉義符 \!\# ,這樣就會被 freetds 識別。

如果執行該命令返回的是 如下資訊

Unexpected EOF from the server

那說明是freetds 的版本資訊不正確,關於freetds 版本的資訊 可以參考 http://www.freetds.org/userguide/choosingtdsprotocol.htm

那麼對應的版本資訊修改只需要在 /usr/local/freetds/etc/freetds.conf 中修改 特定資料庫連接的tds version ,這裡我串連的是 SqlServer 2005 ,預設版本是 7.0 , 但是串連報錯,所以這裡我修改成了7.1 就ok 了,如下:

修改完成之後,再次測試如果返回的結果下,那麼就說明串連資料庫成功了。

3.php 串連 SQLserver

上面的測試直接用freetds 測試資料庫是否可以連結資料庫,那麼怎麼才能讓php也支援SqlServer 呢? 這裡需要用到php5的開發人員模式,之前我預設只安裝了php5,

所以這裡你需要安裝一下php5-dev ,直接用命令 apt-get install php5-dev,安裝完成後在/usr/bin 目錄下就會看到 phpize5 等相關php 開發這模式的外掛程式

這裡我預設安裝的是php5.5.9 ,所以需要下載 php5.5.9的源碼,然後進入 ext/mssql/ 編譯對SQLserver 的支援。 源碼:http://us2.php.net/get/php-5.5.9.tar.xz/from/this/mirror

同樣也可以用 wget 下載。下載後用 tar xf php-5.5.9.tar.gz ,進入到 ext/mssql 目錄執行以下命令:

/usr/bin/phpize5

./configure --with-php-config=/usr/local/webserver/php/bin/php-config5 --with-mssql=/usr/local/webserver/freetds/
make && make install

安裝成功後,你可以在 /usr/lib/php5/20121212 這目錄下有 mssql.so ,當然這個檔案的大體目錄是位於 /usr/lib/php5 ,至於後面有年月日組成的這個檔案夾,在不同不伺服器上是不一樣的。

 

接下來就編輯php.ini 設定檔 /etc/php5/apache2/php.ini

在檔案中加上 extension=mssql.so

然後重啟 apache  service apache2 restart

在/var/www/html 目錄下建立 index.php 檔案,cat index.php

echo phpinfo();

然後訪問 localhost/index.php ,你就可以看到 mssql 的支援了

這說明php已經support SQLSERVER 資料庫了,如果你想測試下能不能把資料取出來,那麼可以寫一下demo 的 code,建立 test.php

header("Content-type: text/html; charset=utf-8");  $msdb=mssql_connect("mssql.yourdomain.com:1433","username","password");  if (!$msdb) {          echo "connect sqlserver error";          exit;  }  mssql_select_db("database_name",$msdb);  $result = mssql_query("SELECT top 5 * FROM table", $msdb);  while($row = mssql_fetch_array($result)) {          var_dump($row);  }  mssql_free_result($result);  

 

到這裡所有的步驟已完成。

 

ubuntu系統下配置php支援SQLServer資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.