linux版本:64位CentOS 6.8
Nginx版本:1.12.0
php版本:7.1.5
Sqlserver版本:2008
1.首先需要编译安装FreeTDS 官网:http://www.freetds.org/software.html
注意根据你SQL Server版本来选择,我的是2008所以填写7.3, --with-tdsver=7.3 参考链接 http://www.freetds.org/userguide/choosingtdsprotocol.htm
# wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
# tar -zxvf freetds-patched.tar.gz
# cd freetds-1.00.83 #解压以后的路径自己看,这个不一定对
# ./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
# make && make install
2.验证FreeTDS版本,这一步非常重要,通过才可以继续,不然后面的步骤都是无意义的。
首先看看版本信息
# /usr/local/freetds/bin/tsql -C
测试数据库是否联通
# /usr/local/freetds/bin/tsql -H 数据库服务器IP -p 端口号 -U 用户名 -P 密码 ##端口号一般是1433
3.安装PHP的安装pdo_dblib扩展
http://php.net/downloads.php
上php官网下载对应php版本的源码包找到里面的扩展来安装 我的是7.1.5所以我下载的是7.1的版本
linux下用phpize给PHP动态添加扩展
phpize不同服务器位置可能不一样,你可以通过whereis phpize查找位置,或者 find / -name 'phpize'查询位置
执行./configure 如果你的php不是安装在/usr/local路径下 你要修改为自己的php路径
#cd php-7.1.15/ext/pdo_dblib
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-dblib=/usr/local/freetds/
# make && make install
4.在php.ini配置文件中增加扩展 .so
同上,如果php配置文件不在这里,你可以通过whereis php.ini查找未知,或者 find / -name 'php.ini'查询位置
#vim /usr/local/php/etc/php.ini
##在php配置文件里添加一行
extension=pdo_dblib.so
5.最后重启php-fpm,可以通过phpinfo()方法查看pdo_dblib扩展是否安装成功
# service php-fpm restart
6.下载附件里面的php类库,配置database.php文件
dblib驱动类库下载:https://fores.cc/usr/uploads/2018/03/1252872861.zip
下载链接2: https://pan.baidu.com/s/1CwYXcRs8F2_hs7lNoaN2Nw 密码: ig3w
下载附件并复制数据库驱动扩展文件到ThinkPHP的文件中
文件放到主程序下 /thinkphp/library/think/db 下方
修改database.php文件里的 type 为 dblib
return [
// 数据库类型
'type' => 'dblib',
// 服务器地址
'hostname' => '',
// 数据库名
'database' => '',
// 用户名
'username' => '',
// 密码
'password' => '',
// 端口
'hostport' => '1433',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
];