今天在某项目上又实然要使用SQL Server 2008,然后折腾了一翻,在紧张的工期内,终于完成了,实乃不易,特此记录下来,免后人继续踩坑。PHP的最佳搭档是MYSQL,就像ASP.NET的最佳搭档是 SQL SERVER一样。在windows下使用PHP连接SQL SERVER应该没难度,因为都是微软系的。但是我们生产环境是Linux所以不得不折腾。
环境:
CentOS 7.2 64位
PHP 5.6.29
SQL Server 2008
Freetds-1.00.48
首先,安装扩展
PHP有很多数据库扩展,针对不同的数据库系统,这里我们选择使用PDO方式连接SQL Server数据库,那么我们还需要一个 具体数据库的 PDO 驱动 来访问数据库服务,即"pdo_dblib"扩展。
找到php-5.6.29的源码,进入到ext下面,我们可以看到一个pdo_dblib的文件夹,即 /root/php-5.6.29/ext/pdo_dblib
切换到/root/php-5.6.29/ext/pdo_dblib之后,按正常操作应该是执行:
# /usr/local/php56/bin/phpize
# ./configure --with-php-config=/usr/local/php56/bin/php-config
但是,那会报一个错误 ,就是找不到FreeTDS,如下图:
error : Cannot find FreeTDS in knows installaction directories
下载安装FreeTDS
# wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
# tar -zxvf freetds-patched.tar.gz
# cd freetds-1.00.48/
# ./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
# make && make install
注:1. 什么是FreeTDS 2. tdsver为什么是7.3
测试FreeTDS
# /usr/local/freetds/bin/tsql -C
# /usr/local/freetds/bin/tsql -H 127.0.0.1 -p 1433 -U xxx -P xxx