lnmpa远程连接mssql数据库需要两步:
1、安装linux的mssql软件开发包,如FreeTDS;
2、安装PHP的mssql扩展。
1、下载并安装FreeTDS:
#下载FreesTDS,可进入ftp://ftp.freetds.org/pub/freetds/stable/下载最新版本,这里以freetds-1.00.27为例
$ wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.1.tar.gz
#解压
$ tar -zxvf freetds-1.1.tar.gz
#进入解压的目录
$ cd freetds-1.1
#配置
$ ./configure --prefix=/usr/local/freetds --enable-msdblib --with-tdsver=7.4
#编译安装
make && make install
留意tdsver的版本号:
关于版本号的更多信息可以在这里看到http://www.freetds.org/userguide/choosingtdsprotocol.htm
配置参数说明:
--prefix=/usr/local/freetds 安装的目录
--enable-msdblib 允许Microsoft的函数库
--with-tdsver=7.4 FressTDS版本号
检查是否安装成功:
#进入安装的目录
$cd /usr/local/freetds/bin
#显示版本信息
./tsql -C
如果显示如下内容,则表示已经安装成功:
尝试连接MSSQL
#进入安装目录
$ cd /usr/local/freetds/bin
#连接
$ ./tsql -H 192.168.0.254 -p 1433 -U sa -P 123456
#出现1>,说明连接成功,mssql命令测试一下
use master
go
select * from sysdatabases
go
#可以看到所有数据库
如果显示如下内容表示连接成功:
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
# 按 ctrl + C 退出
2、安装PHP拓展,可去PHP官网下载完成包,这里以PHP-5.6.22为例(每次升级php都要重新编译拓展)(非必须)
#进入PHP扩展源码目录
cd 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
如果编译完成后出现如下内容,则表示扩展安装成功
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
在/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/目录里生成了mssql.so文件,接着编辑php.ini,添加扩展库支持
#php.ini所有目录
/usr/local/php/etc/php.ini
# 启用如下,如无则添加
extension = "mssql.so"
#重启lnmpa
$ lnmpa restart
完成后,可以使用$con = mssql_connect('host:1433','user','password') or die("SQL SERVER 数据库连接失败!");了。
3、安装PHP扩展pdo_dblib库(建议)
# 进入pdo_dblib模块源码目录
#先解压tar -xjf php-7.2.34.tar.bz2
$ cd php-7.2.34/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
安装完成后会在对应目录里生成pdo_dblib.so文件(如/usr/local/php/lib/php/extensions/no-debug-zts-20170718),编辑php.ini,并添加extension = "pdo_dblib.so",最后重启lnmpa。
完成后可以使用$con = new PDO("dblib:host=myHost;dbname=myDB","myUserName","myPassword");了。
PHP读取MSSQL可能会出现乱码情况,可以在 php.ini 中指定mssql语言集
# 编辑 php.ini
$ vi /usr/local/php/etc/php.ini
# 搜索关键词
$ /mssql.charset
# 按n搜索下一项
# 在如下行下面再添加一行utf-8或GBK
;mssql.charset = "ISO-8859-1"
mssql.charset = "utf8"
#是utf8还是gbk,要根据PHP程序的文件编码决定。