centos7 php5.6 如何安装mssql扩展,需要支持sqlserver2012

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7 php5.6 如何安装mssql扩展,需要支持sqlserver2012相关的知识,希望对你有一定的参考价值。

参考技术A

其实sql server 不一定要mssql扩展, 可以使用pdo连接

$Conn  = new PDO('dblib:数据库地址:数据库端口;dbname=数据库名称', '数据库用户', '数据库密码');

不过, centos7系统是linux系统, sql server数据库只能运行在win系统下, 你要远程连接数据库?

如果真是这样, 那还不如直接服务器用windows操作系统,虽然linux运行php各方面比win系统好些, 但相对远程连接数据库来说, 就不如php和sql server放在一台服务器了!

远程连接数据库,速度上有很大影响!具体还得看两台服务器放置的机房和配置等之类的!

linux编译安装mssql客户端和配置php连接mssql

凡是连接数据库,必须安装客户端,我一般写博客都不写原理,但是后来发现回头看自己写的自己都看不懂,所以这章博客会多一点原理性的东西。


数据库的连接一般都是在客户端上完成的,MySQL也不例外,安装mysql时一般都会这么安装:

#yum install mysql mysql-server

上面的mysql就是安装的客户端,mysql-server就是服务端,不安装客户端(mysql)就没办法执行mysql连接命令:mysql -u user -p pass -h -P port 

而sqlserver同样需要客户端,下面讲的就是在linux下安装sqlserver 2008的客户端freetds


安装环境:

#centos6.8
#php5.6
#sqlserver2008


  1. 下载freetds,一般都会在官网下载,这个开源的想必没人会用盗版。


wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
#linux下载有点慢,可以在windows上下载,然后再上传至linux上。
tar zxf freetds-patched.tar.gz
cd freetds-1.00.27
./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
make && make install


2.导入ldconfig

 echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
 ldconfig


3.查看安装的版本: 

/usr/local/freetds/bin/tsql -C

4.测试能否连接sqlserver:

/usr/local/freetds/bin/tsql -H 10.10.10.10 -p 1433 -U sa -P password

5.添加PHP扩展mssql和pdo_dblib,这是php两种连接mssql的方式,只安装mssql也可以。

注意:一般安装php会选择两种方式,一种是编译安装,一种是yum安装。下面分别来讲解两种方式的安装方式:

1)yum安装的php

#很简单,直接yun安装mssql插件即可:

yum install php-pdo -y
yum install php-mssql -y

2)编译安装的php

#进入到php的安装包中,安装mssql插件
cd /home/tools/php-5.6.20/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


#安装pdo_dblib
cd /home/tools/php-5.6.20/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

在php.ini中添加mssql和pdo_dblib:

mv /usr/local/php/lib/php/extensions/no*/mssql /usr/local/php/lib/php/extensions/
mv /usr/local/php/lib/php/extensions/no*/pdo_dblib /usr/local/php/lib/php/extensions/
#把前面安装的扩展插件生成的文件移动到extension目录下
vi /usr/local/php/lib/php.ini
extension_dir = "/usr/local/php/lib/php/extensions"
extension = "mssql.so"  
extension = "pdo_dblib.so"


3)重启php,看扩展插件有没有生效:

#编译一个php测试文件:

vi /www/html/test.php
<?php
phpinfo();
?>

用浏览器打开上面的测试文件,会看到如下信息,代表成功安装:

http://ip/test.php

技术分享


6.测试mssql连接sqlserver2008:

#编辑一个测试文件:

vi /www/html/connect_sql.php
<?php  
header("Content-type: text/html; charset=utf-8");    
$msdb=mssql_connect("10.10.10.10:1433","sa","password");  
if (!$msdb) {  
    echo "connect sqlserver error";  
    exit;  
    }  
mssql_select_db("test",$msdb);  
$result = mssql_query("SELECT top 5 * FROM student", $msdb);  
while($row = mssql_fetch_array($result)) {  
 print_r($row);  
}  
mssql_free_result($result);  
?>

#如果内容是sqlserver test数据库,student表内的内容代表php成功连接到数据库。


7.测试pdo_dblib连接sqlserver2008:

#创建一个测试文件
vi /www/html/connect_db.php
<?php  
header("Content-type: text/html; charset=utf-8");  
  try {  
    $hostname = "10.10.10.10";  
    $port = 1433;  
    $dbname = "test";  
    $username = "sa";  
    $pw = "password";  
    $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");  
  } catch (PDOException $e) {  
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";  
    exit;  
  }  
   
  $stmt = $dbh->prepare("SELECT top 5 * FROM student");  
  $stmt->execute();  
  while ($row = $stmt->fetch()) {  
    print_r($row);  
  }  
  unset($dbh); unset($stmt);  
  
?>

#如果内容是sqlserver test数据库,student表内的内容代表php成功连接到数据库。


本文出自 “王家东哥” 博客,谢绝转载!

以上是关于centos7 php5.6 如何安装mssql扩展,需要支持sqlserver2012的主要内容,如果未能解决你的问题,请参考以下文章

Centos7 yum安装php5.6+apache2.4.7+mysql5.6

centos7.4 编译安装php5.6 (LNMP)

centos7安装php5.6报错集合

centos7 nginx+php5.6+mysql安装与配置

centos7更新php5.4到php5.6/php7

centos7源码安装php5.6并安装pthreads扩展