php connect to SQL2000
一次偶然的機會必須要使用以下奇怪的架構
Database Server
MS SQL 2000
Web Server
Linux using apache, php...
資料放在sql2000, 建立php 網頁存取
網路上查了一下資料大致作法如下
1.
安裝freetds
2.
重新安裝php
細節
Ubuntu (ref.1)
安裝連mssql的套件
sudo apt-get install freetds-dev
sudo apt-get install tdsodbc
修改/etc/freetds/freetds.conf
[FSData]
host = 192.168.x.x
port = 1433
client charset = cp950
tds version = 8.0
修改/etc/odbcinst.ini
[FreeTDS]
Description = FreeTDS 0.61-5 Deb
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
FileUsage = 1
CPTimeout = 5
CPReuse = 5
修改/etc/odbc.ini
[Products]
Description = Products on Our MSSQL Server
Driver = FreeTDS
Servername = FSData
Database = Products
下載php source code
sudo apt-get source php5
修改php 資料夾 中debian/rules
加入於 common config
--with-mssql
重新建立deb檔
sudo apt-get build-dep php5
sudo dpkg-buildpackage
安裝
sudo dpkg -i php5_5*.deb
複製libphp.so
sudo cp \~/php5-*/apache2-build/libs/libphp5.so /usr/lib/apache2/modules/libphp5.so
重新啟動
sudo /etc/init.d/apache2 restart
如果全部用source code(ref.2)
FreeTDS 官方網站: http://www.freetds.org/
下載 FreeTDS source distribution
編譯參數: --prefix=/usr/local/freetds --enable-msdblib
修改 /etc/ld.so.conf, 加入 /usr/local/freetds/lib
再執行 ldconfig
修改 /usr/local/freetds/etc/freetds.conf
內容同上
重新編譯 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
測試連線(ref.3)
mssql_connect('FSData','username','password');
//第一個參數是 servername, 參照 freetds.conf
mssql_select_db('your_db');
如此一來已經大功告成
要注意的是我有遇到sql2000定義 "ntext" 並不支援 請改成 "text" !!
reference:
ref.1 How to compile MSSQL support into PHP in Ubuntu Dapper Drake
ref.2 PHP@Linux vs MS-SQL Server database (using FreeTDS)
ref.3 PHP MSSQL extension
convert from Thomas blog post id 10 old convert log: ./152600/tag%3E2006%2009%20linux%20php%20sql)
@2006 @09 @linux @php @sql
Comments