PHP 5.3.6 + MSSQL + FreeTDS


原文地址:http://www.mavrick.id.au/2012/php-5-3-6-mssql-freetds/

To go against what the community will tell you it is possible to compileMSSQL module in PHP 5.3.x (dont know why you would want to thought!)

I’ve used the FreeTDS module and manually enabled the MSSQLmodule in the php.ini file and presto, MSSQL support on linux with PHP5.3.6!

I’m not going to go into large detail, if you can’t understand what I have written below than you’re going to have a hard time installing this. I could go into more detail however at this point in time I do not have the time to do so. So if someone out there wants to take what I have written and expand on it I’d be happy to re-post it.

cd /
mkdir /source
cd /source

wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

tar -xv freetds-stable.tgz
cd freetds-0.91

./configure –enable-msdblib –prefix=/usr/local/freetds
make && make install

cp include/tds.h /usr/local/freetds/include
cp src/tds/.libs/libtds.a /usr/local/freetds/lib

cd /source

wget http://au.php.net/get/php-5.3.6.tar.bz2/from/this/mirror -o php-5.3.6.tar.bz2
tar -xf php-5.3.6.tar.bz2
cd php-5.3.6

cd etx/mssql
phpize
./configure –with-mssql=/usr/local/freetds
make

Find out where PHP expects to find extension libraries. The simplest way to check this is through the command line.

php -i | grep extension_dir

Example: /usr/lib/php5/20090626

cp modules/mssql.so /usr/lib/php5/20090626

Edit php.ini file and add:

extension=mssql.so

/etc/init.d/apache2 restart


注意:如果没有mssql.so则需要编译生成

cd php-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


命令行测试链接:

/usr/local/freetds/bin/tsql -S ip:port -U usr -P password -D database


locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20017 (severity 9):
        Unexpected EOF from the server
        OS error 115, "Operation now in progress"
Error 20002 (severity 9):
        Adaptive Server connection failed
There was a problem connecting to the server
 
于是执行tsql -C发现freetds的版本是5.0,考虑到可能是freetds版本的问题,于是指定freetds版本为7.0,执行如下
 
sh-3.2# TDSVER=7.0 /usr/local/freetds/bin/tsql -S ip:port -U usr -P password -D database 
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> select @@version
select @@version
2> go
go
 
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
        Oct 14 2005 00:33:37
        Copyright (c) 1988-2005 Microsoft Corporation
        Express Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

猜你喜欢

转载自zhaobing315.iteye.com/blog/1695617