我之前写过一篇用 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