1、安裝freetds
$ cd /root/lnmp1.5/src
$ wget ftp://ftp.freetds.org/pub/freetds/current/freetds-current.tar.gz
$ tar zxvf freetds-current.tar.gz
$ cd freetds-dev.1.00.411
$ ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
$ make && make install
2、安裝pdo_dblib
$ cd /root/lnmp1.5/src
$ ls
----------------------------------------------------------------------
php-7.1.18.tar.bz2 phpMyAdmin-4.8.1-all-languages.tar.xz ...
#發現php安裝文件: php-7.1.18.tar.bz2 每個人的PHP安裝版本不同,根據自己的PHP版本來選擇
$ tar jxvf php-7.1.18.tar.bz2
$ cd /root/lnmp1.5/src/php-7.1.18/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
----------------------------------------------------------------------
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
3、在php.ini最後一行追加上面的路徑
$ vi /usr/local/php/etc/php.ini
extension=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/pdo_dblib.so”
4、重啓fpm
$ lnmp php-fpm restart
5、測試是否能夠連接遠程mssql
$ /usr/local/freetds/bin/tsql -H 192.1.1.1 -p 1433 -U admin -P 123456 -D dbname
----------------------------------------------------------------------
#如果成功會有如下顯示:
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Setting dbname as default database in login packet
1>
6、TP5 使用dblib連接遠程sqlserver
//初始化dblib
protected function init_sql_db ()
{
$hostname = "192.1.1.1";
$port = 1433;
$dbname = "dbname";
$username = "admin";
$pw = "123456";
$dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname", "$username", "$pw");
trace($dbh);
$dbh->setAttribute(PDO::ATTR_PERSISTENT, false);
echo 'success';
return $dbh;
}
//調用dblib
public function t()
{
$dbh = $this->init_sql_db();
$sqlStr = "SELECT id,name FROM user where id>10 limit 10";
$stmt = $dbh->prepare($sqlStr);
$stmt->execute();
$items = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo json_encode($row)."\r\n";
array_push($items, $row);
}
var_dump($items);
$stmt = null;
unset($stmt);
$dbh= null;
unset($dbh);
}