發新話題
打印

PHP@Linux vs MS-SQL Server database (using FreeTDS)

PHP@Linux vs MS-SQL Server database (using FreeTDS)

FreeTDS 提供一套函數庫, 讓執行於 Unix 與 Linux 環境的程式可以透過它存取 Microsoft SQL Server 與 Sybase database.
以下是讓 Linux 上的 PHP 可以透過 FreeTDS 存取 MSSQL Server 的操作步驟:
環境: Fedora Core 1 完全安裝 (已裝有 Apache HTTP Server + PHP + MySQL 的環境)

Step 1. 安裝 FreeTDS

FreeTDS 官方網站: http://www.freetds.org/ 選擇下載 FreeTDS source distribution

編譯參數: --prefix=/usr/local/freetds --enable-msdblib

安裝後, 修改 /etc/ld.so.conf, 加入 /usr/local/freetds/lib; 完成後再執行 ldconfig

Step 2. 修改 /usr/local/freetds/etc/freetds.conf

[sql2k]

host = your.mssql.server.ip
port = 1433
client charset = cp950
tds version = 8.0

a. 中括弧 [ ] 內的字串可自行定義, 往後連線時會用到.
b. tds version: 4.2 (適用 MS SQL Server 6.x); 7.0 (適用 7.x); 8.0 (適用 2000)

Step 3. 測試 FreeTDS 是否可連線 MS SQL Server

#cd /usr/local/freetds/bin
#./tsql -S sql2k -U sa
1> use mydatabase
2> select * from mytable
3> go

成功的話會顯示 mytable 資料

離開 tsql:

1> quit

Step 4. 重新編譯 PHP Source

PHP 官方網站: http://www.php.net/

編譯前, 先用 php 程式執行 echo phpinfo(); 顯示原本安裝時所有的參數, 以取用需要的 configure 參數
最後再加上 --with-mssql=/usr/local/freetds

執行範例:

./configure '--prefix=/usr/local/php_4.3.10' '--localstatedir=/var' '--disable-debug' '--enable-pic' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-regex=system' '--with-xml' '--with-expat-dir=/usr' '--with-dom' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-xmlrpc=shared' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-bcmath' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear' '--with-imap=shared' '--with-imap-ssl' '--with-kerberos' '--with-ldap=shared' '--with-mysql' '--with-pgsql=shared' '--with-snmp' '--with-snmp=shared' '--enable-ucd-snmp-hack' '--with-unixODBC' '--enable-memory-limit' '--enable-bcmath' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--enable-mcal' '--enable-mbstring' '--enable-mbstr-enc-trans' '--enable-mbregex' '--with-apxs2=/usr/sbin/apxs' '--with-mssql=/usr/local/freetds'

編譯、安裝完成後, cp php.ini-dist /prefix/lib/php.ini

Step 5. 啟動 Apache HTTP Server 進行測試

Sample Code:

<?php

mssql_connect('sql2k','sa','');
mssql_select_db('mydatabase');
$rs = mssql_query('select * from mytable');
list($column01) = mssql_fetch_row($rs);
echo $column01;

?>

成功的話, 會顯示 mytable 第一筆資料的第一個欄位內容

mssql functions 請參見: http://hk.php.net/manual/hk/ref.mssql.php
제가 서 감강 입니다
發新話題