php 怎么使用sql server 2000,Linux下PHP支持MSSQL(SQL Server2000)

  • Post author:
  • Post category:php


Linux下PHP支持MSSQL(SQL Server2000)

1. 編譯FreeTDS

# tar zxvf freetds-0.82.tar.gz

# cd freetds-0.82

//–with-tdsver=8.0是指安裝tds 8.0版本(如果沒有加這個參數,則按照默認編譯為5.0。5.0連接數據庫的端口是4000,而不是SQLServer的1433)

# ./configure –prefix=/usr/local/freetds –with-tdsver=8.0

# make

# make install

2. 編譯PHP

使PHP支持MSSQL,可以使用兩種方式,一種是直接編譯進PHP,一種是編譯成PHP可載入的模塊。如果還沒有編譯安裝PHP,建議使用前一種方式,因為這樣PHP的執行速度快。如果已經安裝了PHP,又嫌重新編譯PHP麻煩,用后一種方式吧。

(1) 編譯進PHP

如何編譯PHP,請參考 php配置GD庫(http://blog.csdn.net/wl3115/archive/2008/03/05/2148571.aspx)。要增加對MSSQL的支持,只要在編譯參數上加上–with-mssql=/usr/local/freetds即可。

(2) 編譯成模塊

//進入php的源碼目錄、MSSQL模塊源碼目錄

# cd /home/wxw/gd/php-5.2.5/ext/mssql/

//生成編譯配置文件

# /usr/local/php/bin/phpize

# ./configure –with-php-config=/usr/local/php/bin/php-config –with-mssql=/usr/local/freetds/

# make

# make install

在編譯配置的時候可能會遇到找不到FreeTDS的錯誤:

configure: error: Directory /usr/local/freetds is not a FreeTDS installation directory

按照官方的解釋(http://www.freetds.org/news.html),PHP檢測一些文件以確定FreeTDS是否安裝,由於新版的FreeTDS不再安裝這些文件,導致PHP編譯失敗。只需建立兩個空文件即可:

# touch /usr/local/freetds/include/tds.h

# touch /usr/local/freetds/lib/libtds.a

//將mssql.so添加到php.ini,路徑在安裝后會有提示

# vim /usr/local/php/lib/php.ini

extension = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/mssql.so”

# /usr/local/apache2/bin/apachectl restart

寫個phpinfo()查看一下有沒有mssql擴展

3. 中文問題

//在php.ini文件中加入mssql.charset = “GBK”,讀取正常,添加的時候用utf-8轉gbk

# vim /usr/local/php/lib/php.ini

mssql.charset = “GBK”

4. 客戶端測試(沒多大意義)

//配置數據庫連接信息,不用設置編碼,就可以顯示中文

# vim /usr/local/freetds/etc/freetds.conf

[sqlserver]

host = 10.0.0.11

port = 1433

tds version = 8.0

//參數查看# tsql –help

# /usr/local/freetds/bin/tsql -H 10.0.0.11 -p 1433 -U ts -P tsst

1> use test

2> go

1> select * from tb

2> go

1> quit

5. 順便提一下windows環境php中mssql擴展

1 把php.ini中的”extension=php_mssql.dll”前面的分號去掉

2 然后安裝mssql的客戶端或者復制ntwdblib.dll到system32中。(php壓縮包里有)

然后在phpinfo()函數中看看沒有mssql擴展。