linux php 连接sqlservser

364 阅读4分钟

linux php 连接sqlservser

近期有个项目需求需要连接远程的sqlservser,给我上了一课,起初踩了很多坑甚至导致重装系统,网上大多都是win系统下装扩展的教程。最后好不容易找到几篇文档,感谢那些大佬。

直接正题

首先我们需要装的是 FreeTDS 什么是FreeTDS   简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一个开源的程序库,是TDS(表列数据流 )协议的再次实现。它可以被用在Sybase的db-lib或者ct-lib库。它也包含一个ODBC的库。允许许多开源的应用软件比如Perl和PHP(或者你自己的c或C++程序)去连接到Sybase或 Microsoft SQL服务器。FreeTDS 以源码的形式被发布,几乎可以在任何操作系统上编译。意味着Unix和类Unix系统(包括著名的分支如Interix和QNX),还有Win32,VMS,和OSX。 原文链接: blog.csdn.net/qq_37050993… 简单来说就是用于Linux操作微软的SQL数据库的库或者说软件,驱动(可能不太准确的描述)。

如何装: 1.首先需要编译安装FreeTDS

1.1、安装(这一部分也可以百度相关教程,我一时我不到我之前看的教程的,不过大同小异)

说明:一定要从官网下载最新的版本FreeTDS-0.95 ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz

如果官网实在太慢建议从本人上传的这里一样很快下载:download.csdn.net/detail/21as…

wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz

tar -zxvf freetds-patched.tar.gz

cd freetds-0.95

./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib

make && make install

需要注意的就是这里的--with-tdsver=7.3,这个非常重要,你需要根据你的数据库版本选择正确的配置项,本人是SQLserve2008所以需要选择7.3.

FreeTDS-0.91只支持7.1,其余都会默认为5.0。只有FreeTDS-0.95是对Sqlserver2008的最佳配置

1.2、配置FreeTDS(这部分可以忽略)

#cd ../

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

1.3、验证FreeTDS版本

这一步非常重要,通过才可以继续,不然后面的步骤都是无意义的。

首先看看版本信息

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

Compile-time settings (established with the "configure" script) Version: freetds v0.95.19 freetds.conf directory: /usr/local/freetds/etc MS db-lib source compatibility: yes Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 7.3 iODBC: no unixodbc: no SSPI "trusted" logins: no Kerberos: no OpenSSL: no GnuTLS: no

1.4、测试连通性

/usr/local/freetds/bin/tsql -H 数据库服务器IP -p 端口号 -U 用户名 -P 密码

1.5、修改配置

如果你想使用配置项,只要修改[egServer70]即可:

[egServer70]

host = 192.168.1.235 这个是数据库服务器IP  

port = 1433  

tds version = 7.1

2、安装mssql或pdo扩展

2.1、安装mssql

cd /usr/php-5.6.25/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

cp /usr/local/php/lib/php/extensions/no-debug-zts-20131226/mssql.so /usr/local/php/extension/mssql.so(此处根据个人配置)

2.2、安装pdo

增加PHP扩展pdo的pdo_dblib

cd /usr/php-5.5.28/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

cp /usr/local/php/lib/php/extensions/no-debug-zts-20131226/pdo_dblib.so /usr/local/php/extension/pdo_dblib.so(此处根据个人配置)

在php.ini中添加extension = "mssql.so" 或 extension ="pdo_dblib.so" (安装一个足够了) 转载 www.cnblogs.com/ttiandeng/p…

以上都是查找的各种教程,下面简单说一下自己的了解和搭建项目遇到的坑 首先我用的是tp3框架首先第一个坑是连接报驱动错误问题 无法加载数据库驱动: Think\Db\Driver\Dblib,解决方法下图。

在这里插入图片描述
其次就是多数据库配置和连接方式有其他配置的具体百度这个问题不大 user=M()->db(2,"DB_NEW")->field('code,name,MoneySelf')->table("Base_Employee")->alias('e')
            ->join('left join XFID_Account AS a ON e.code=a.EmpCode')
            ->where(array('e.code'=>_POST['jobnumber']))->find(); 这是个例子
在这里插入图片描述
最坑的问题估计就是查询插入汉字乱码,首先这肯定是编码问题,但是起初我更改了我所知道的各种编码,百度教程的各种数据处理转码都没用,偶然间发现原来需要更改的是freetds的配置。
在这里插入图片描述