我之前写过一篇用 pdo_sqlsrv 扩展对接SqlServer2008的文章,但是后来在实际应用的时候发现 tp5.1 在使用Db操作SqlServer2008插入数据时会报一些非常诡异的 BUG(比如连续插入两条记录,第二次插入时会报上一条记录的字段缺少错误)。所以本文换为使用 pdo_dblib 扩展来对接SqlServer,且 PHP 的版本只能使用5.6(因为扩展的缘故)
#安装freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.1.33.tar.gz
tar -zxvf freetds-1.1.33.tar.gz
cd freetds-1.1.33
./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
make && make install
echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
ldconfig
#验证是否安装成功
/usr/local/freetds/bin/tsql -C
#下载php5.6,编译mssql扩展
cd ..
wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar -zxvf php-5.6.40.tar.gz
cd php-5.6.40
cd ext
cd mssql
/www/server/php/56/bin/phpize
./configure --with-php-config=/www/server/php/56/bin/php-config --with-mssql=/usr/local/freetds/
make && make install
#编译pdo_dblib扩展
cd ..
cd pdo_dblib
/www/server/php/56/bin/phpize
./configure --with-php-config=/www/server/php/56/bin/php-config --with-pdo-dblib=/usr/local/freetds/
make && make install
#修改宝塔php.ini配置,重载php
echo "extension = pdo_dblib.so" >> /www/server/php/56/etc/php.ini
/etc/init.d/php-fpm-56 reload
/www/server/php/56/bin/php -m|grep -i sqlsrv