概述
- 环境:Linux(Centos6.8) + PHP5.6.22 + Mysql5.7 + apache2.4 + Thinkphp3.2
- Thinkphp自带的Sqlser扩展无法正常使用,因此需要自己手动编写扩展文件
- Linux的mssql扩展,只支持php7.0以下版本,因此,需要将php的版本降低到7以下
- 需要安装扩展
- freetds
- mssql
- pdo_dblib
过程
安装freetds
该扩展,是为了是PHP支持mssql扩展
-
下载最新版本的freetds(当前是1.00.15版本),下载地址:
http://www.freetds.org/software.html
个人建议,不要在linux服务器上用wget下载该文件,最好用windows打开,用迅雷下载。 -
安装过程
$ tar -zxvf freetds-stable.tgz
$ cd freetds-1.00.15
$ ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
$ make
$ make install
--with-tdsver:指定了连接sqlserver的版本
--enable-msdblib:是否允许Microsoft数据库函数库
- 安装成功,验证
$ cd /usr/local/freetds/bin
$ ./tsql -C
显示如下信息,表明freetds安装成功

安装PHP的mmsql扩展
- 找到服务器安装的PHP的版本的源码包,进入PHP的扩展目录:
php-5.6.22/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/php/lib/php/extensions/no-debug-non-zts-20131226`目录生产相应的扩展的`.so`文件,然后需要在php.in文件中,在加载扩展中,添加:`extension=mssql.so`,即将`mssql`扩展开启了。
然后访问`phpinfo`查看确认`mmsql`扩展安装成功

安装PHP的pdo_dblib扩展
期安装过程,参考上面mmsql的安装过程,过程方式是一样的
在php.ini中开启pdo_dblib扩展,访问phpinfo查看扩展是否安装成功

编写自己支持的mssql扩展
Thinkphp自带的是没有mssql支持的DB扩展的,因此需要自己编写一份。
可以将ThinkPHP/Library/Think/Db/Driver/Sqlsrv.class.php拷贝一份为:Mssql.class.php,然后修改其中的连接即可。
/**
* 解析pdo连接的dsn信息
* @access public
* @param array $config 连接信息
* @return string
*/
protected function parseDsn($config){
$dsn = '';
if (isset($config['hostname']) && isset($config['hostport']) && isset($config['database'])) {
$hostname = trim($config['hostname']);
$hostport = trim($config['hostport']);
$database = trim($config['database']);
$dsn = "dblib:host={$hostname}:{$hostport};dbname={$database}";
}
return $dsn;
}
然后,将数据库连接中的连接类型设置为:mssql即可
'DB_TYPE' => 'mssql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'thinkphp', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '123456', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_CHARSET'=> 'utf8', // 字符集
附件
- freetds-patched.tar.gz(链接: http://pan.baidu.com/s/1jIIBa1g 密码: uy4r)
- Mssql.class.php(链接: http://pan.baidu.com/s/1o7SweLk 密码: eubb)