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擴展。