ubuntu系统下配置php支持SQLServer数据库

最近在做一个项目,该项目的数据库是微软公司的的SQLserver ,数据库安装在另一台windows服务器上,而项目却部署在ubuntu server上。那么这样就会涉及到项目在linux上如何链接SQLserver ?在这里我用的是freetds 来做链接数据库的中间件,下面是我实践的步骤:

1.下载最新的freetds ,访问 http://www.freetds.org/, 或者在 ubuntu上用 wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz 下载稳定的版本。

2.安装freetds 和 配置 freetds

cd 进入freetds所在目录,

$ tar zxvf freetds-stable.tgz(解压)
$
./configure --prefix=/usr/local/freetds --with-tdsver=8.0
--enable-msdblib

$ make
$ make install

configure 步骤和 make 步骤可以用 普通用户的权限来完成,install 步骤最好用root 用户,或者是对/usr/local/ 目录有读写的权限的用户.

配置:

编辑/etc/ld.so.conf,在其中插入一行:
/usr/local/freetds/lib
然后运行以下指令使更改生效:
ldconfig

编辑freetds 的配置文件,配置数据库连接信息

vim /usr/local/freetds/etc/freetds.conf 截图如下:

在这里找到egServer70节点,配置你数据所在的服务器地址,一般端口不用改,除非数据库访问用的是其它端口。注意一般这个配置文件中是没有 client charset 的选项的,

需要手动添加,防止数据库乱码。这里设置成 utf8 , 这个编码要和数据库编码一致。修改完成之后就保存退出。然后验证这个配置是否是ok 的。

cd /usr/local/freetds/bin/

./tsql -H your SQLserver addr -p 1433 -U 用户名 -P 密码 -D 数据库

注意你的密码有特殊字符例如 !和 # 之类的,那么需要加上转义符 \!\# ,这样就会被 freetds 识别。

如果执行该命令返回的是 如下信息

Unexpected EOF from the server

那说明是freetds 的版本信息不正确,关于freetds 版本的信息 可以参考 http://www.freetds.org/userguide/choosingtdsprotocol.htm

那么对应的版本信息修改只需要在 /usr/local/freetds/etc/freetds.conf 中修改 特定数据库连接的tds version ,这里我连接的是 SqlServer 2005 ,默认版本是 7.0 , 但是连接报错,所以这里我修改成了7.1 就ok 了,截图如下:

修改完成之后,再次测试如果返回的结果下,那么就说明连接数据库成功了。

3.php 连接 SQLserver

上面的测试直接用freetds 测试数据库是否可以链接数据库,那么怎么才能让php也支持SqlServer 呢? 这里需要用到php5的开发者模式,之前我默认只安装了php5,

所以这里你需要安装一下php5-dev ,直接用命令 apt-get install php5-dev,安装完成后在/usr/bin 目录下就会看到 phpize5 等相关php 开发这模式的插件

这里我默认安装的是php5.5.9 ,所以需要下载 php5.5.9的源码,然后进入 ext/mssql/ 编译对SQLserver 的支持。 源码下载地址:http://us2.php.net/get/php-5.5.9.tar.xz/from/this/mirror

同样也可以用 wget 下载。下载后用 tar xf php-5.5.9.tar.gz ,进入到 ext/mssql 目录执行以下命令:

/usr/bin/phpize5

./configure --with-php-config=/usr/local/webserver/php/bin/php-config5 --with-mssql=/usr/local/webserver/freetds/
make && make install

安装成功后,你可以在 /usr/lib/php5/20121212 这目录下有 mssql.so ,当然这个文件的大体目录是位于 /usr/lib/php5 ,至于后面有年月日组成的这个文件夹,在不同不服务器上是不一样的。

接下来就编辑php.ini 配置文件 /etc/php5/apache2/php.ini

在文件中加上 extension=mssql.so

然后重启 apache  service apache2 restart

在/var/www/html 目录下新建 index.php 文件,cat index.php

echo phpinfo();

然后访问 localhost/index.php ,你就可以看到 mssql 的支持了

这说明php已经support SQLSERVER 数据库了,如果你想测试下能不能把数据取出来,那么可以写一下demo 的 code,新建 test.php

header("Content-type: text/html; charset=utf-8");
$msdb=mssql_connect("mssql.yourdomain.com:1433","username","password");
if (!$msdb) {
        echo "connect sqlserver error";
        exit;
}
mssql_select_db("database_name",$msdb);
$result = mssql_query("SELECT top 5 * FROM table", $msdb);
while($row = mssql_fetch_array($result)) {
        var_dump($row);
}
mssql_free_result($result);  

到这里所有的步骤已完成。

时间: 2024-08-26 21:30:12

ubuntu系统下配置php支持SQLServer数据库的相关文章

Ubuntu系统下配置IP地址方法介绍

配置IP方式有两种: 1.通过命令直接配置 sudo ifconfig eth0 IP地址 netmask 子网掩码------配置IP地 sudo route add default gw 网关------------添加默认路由 vi /etc/resolv.conf 配置文件 添加nameserver DNS----配置DNS sudo /etc/init.d/networking restart-----------重启网卡配置但是方式只能临时修改,当服务器重启后,配置信息丢失:第二种方

ubuntu系统下 配置apache+redmine

记录下 变更原因 最近在内网服务器上架构了redmine 服务用的是redmine自带的服务(/usr/bin/ruby /usr/share/redmine/script/rails server webrick -e production -d) 但是运营一段时间后发现用域名访问时总是出现redmine服务无故的停止,就是通过域名不停止的刷新 redmine页面 服务也会崩溃的.最后没办法换成 apache做为服务 记录下安装及配置方法 apt-get install apache2 apt

[软件工程]在Ubuntu系统下配置GIT

1.首先检查git是否已经安装 终端输入git 2.如果未安装,输入sudo apt-get install git安装 安装完成之后,输入git查看 3. 为这台计算机起一个名字,并且登记邮箱 4.生成ssh密钥,新增git密钥 新增密钥 查看密钥 将文本复制到个人github的ssh密钥中 https://github.com/settings/keys 之后就完全一样了

Ubuntu系统下MySQL数据库基本操作

Ubuntu系统下安装MySQL后,所有新创建的数据库的默认目录为/var/lib/mysql目录,以后用户自己创建的数据库默认就保存在这个目录下.在终端输入mysql回车后,启动mysql服务,可以开始输入命令了.下面介绍一些最基本的数据操作命令: 1. show databases;  #查看有哪些数据库存在 2. create database name; #创建一个叫name的数据库 3. use name; #进入(打开)名字叫name的数据库 4. show tables; #查看这

ubuntu系统下smokping网络监控工具安装配置详解

系统:ubuntu 12.04 1.安装工具及依赖包 sudo apt-get install smokeping curl libauthen-radius-perl libnet-ldap-perl libnet-dns-perl libio-socket-ssl-perl libnet-telnet-perl libsocket6-perl libio-socket-inet6-perl apache2 2.直接启动: [email protected]:/etc/smokeping$ s

Ubuntu系统下的Mysql安装与使用

摘要 在本篇博文中,笔者将从基础出发,介绍Mysql在Linux环境下的安装和基本使用命令,仅适用于Mysql初学者,大牛请绕道-- 安装Mysql数据库 这里介绍最最简单的安装方式,至于编译安装,可以下载安装包, ./configure 生成Makefile,然后 make clean,  make , make test,  make install  我想这些命令应该很基本了吧,这里不再敖述. 1. 安装命令 [email protected]:~$ sudo apt-get instal

Ubuntu系统下运行Eclipse出现找不到jre的问题的解决方法

在Ubuntu的某些版本下,比如10.10,会出现以下奇怪问题:1. 安装jdk我下载的jdk是bin格式的,直接运行解压,得到一个文件夹.这个文件夹作为jdk的安装目录,可以拷贝到任意目录.然后配置环境变量~/.bashrc,在最后添加:export JAVA_HOME=<jdk install dir>export JRE_HOME=$JAVA_HOME/jreexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH重启机器.2. 安装eclipse直接

Ubuntu系统下OpenDaylight源码编译安装

操作系统:Linux x64 / Ubuntu 14.04 研究领域:软件定义网络SDN (Software-defined Networking) 开发组件:OpenDaylight 声明:转载请注明出处及本文链接 一.环境搭建 1. Java+Apache Maven基本开发环境搭建.详见相应的前面两篇文档: <Linux Ubuntu系统下Java开发环境搭建> <Linux Ubuntu系统下Apache Maven的安装和配置> 2. 安装用来获取OpenDaylight

Ubuntu系统下允许Apache的mod_rewrite功能

首先,使能apache的rewirte模块,在shell里输入下边的命令: sudo a2enmod rewrite 然后重启一下webserver使更改生效 sudo service apache2 restart 通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置.从安全性考虑,根目录的AllowOverri