Linux平台使用Freetds连接SQL Server服务器,兼容PHP和Laravel
本文在CentOS 7 64bit和Laravel 4.2环境测试通过。
1.下载源码并解压缩
- wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz
- tar zxvf freetds-stable.tgz
- cd freetds-0.91
2.配置并生成makefile
- ./configure --with-tdsver=8.0 --enable-msdblib
3.编译安装
- make
- sudo make install
4.配置
默认安装的配置文件位于/usr/local/etc,在/usr/local/etc编辑freetds.conf 文件,默认为
- # $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $
- #
- # This file is installed by FreeTDS if no file by the same
- # name is found in the installation directory.
- #
- # For information about the layout of this file and its settings,
- # see the freetds.conf manpage "man freetds.conf".
- # Global settings are overridden by those in a database
- # server specific section
- [global]
- # TDS protocol version
- ; tds version = 4.2
- # Whether to write a TDSDUMP file for diagnostic purposes
- # (setting this to /tmp is insecure on a multi-user system)
- ; dump file = /tmp/freetds.log
- ; debug flags = 0xffff
- # Command and connection timeouts
- ; timeout = 10
- ; connect timeout = 10
- # If you get out-of-memory errors, it may mean that your client
- # is trying to allocate a huge buffer for a TEXT field.
- # Try setting 'text size' to a more reasonable limit
- text size = 64512
- # A typical Sybase server
- [egServer50]
- host = symachine.domain.com
- port = 5000
- tds version = 5.0
- # A typical Microsoft server
- [egServer70]
- host = ntmachine.domain.com
- port = 1433
- tds version = 7.0
在文件的最后位置添加如下配置,即可连接SQL Server 2000
- [sql-server-2000]
- host = 192.168.182.9
- port = 1433
- tds version = 7.0
如果要连接SQL Server 2005或2008,需要添加以下配置
- [sql-server-2005]
- host = 192.168.70.1
- port = 1433
- tds version = 8.0
4.测试
- /usr/local/bin/tsql -S sql-server-2000 -U sa -P test
如果成功连接,将会出现以下提示
- locale is "zh_CN.UTF-8"
- locale charset is "UTF-8"
- using default charset "UTF-8"
- 1>
至此,FreeTDS已经是Linux具备连接SQL Server的功能了。
5.编译PHP扩展
PHP 5.4之后已经没有原生支持的SQL Server的驱动了,因此需要手动编译PHP源码的扩展添加对SQL Server的驱动支持。CentOS 7自带的是5.4版本的PHP,因此我们通过编译5.4版的PHP源码获得扩展。
目前CentOS yum源里最新的php是5.4.16,php可以通过yum安装到系统
- sudo yum install php php-devel php-fpm php-common php-mysql php-pdo libzip
php官网上最新的5.4版本是 5.4.39,下载源码到本地
- wget http://cn2.php.net/distributions/php-5.4.39.tar.gz
解压并进入扩展目录
- tar zxvf php-5.4.39.tar.gz
- cd php-5.4.39/ext/mssql
使用phpize生成configure脚本文件
- phpize
生成makefile
- ./configure
编译
- make
编译之后将会在modules子目录生成mssql.so扩展文件。复制扩展文件到php的扩展文件目录
- sudo cp modules/mssql.so /usr/lib64/php/modules/
在/etc/php.d目录下新建mssql.ini 文件,输入以下内容
- ; Enable mssql extension module
- extension=mssql.so
这样PHP就能加载SQL Server驱动了。使用如下代码测试PHP连接SQL Server。
- <?php
- header("Content-type: text/html; charset=utf-8");
- $msdb=mssql_connect("sql-server-2000","sa","test");
- if (!$msdb) {
- echo "connect sqlserver error";
- exit;
- }
- mssql_select_db("msdb",$msdb);
- $result = mssql_query("SELECT top 5 * FROM employee", $msdb);
- while($row = mssql_fetch_array($result)) {
- var_dump($row);
- }
- mssql_free_result($result);
- ?>
代码中的数据库配置信息可以替换成别的。测试命令如下
- php -f test-mssql.php
成功执行后将会打印出数据库表中记录数据。
目前原生PHP代码已经可以连接SQL Server了,但是Laravel还是不行,还需要再编译生成一个pdo_dblib.so扩展驱动。
6.编译pdo_dblib.so扩展适配Laravel
- cd php-5.4.39/ext/pdo_dblib
- ./configure
- make
- sudo cp modules/pdo_dblib.so /usr/lib64/php/modules/
再到/etc/php.d下新建pdo_dblib.ini,输入以下内容
- ; Enable pdo_dblib extension module
- extension=pdo_dblib.so
再编辑Laravel的app/config/database.php文件,将sqlsrv区域改为一下形式
- 'sqlsrv' => array(
- 'driver' => 'sqlsrv',
- 'host' => 'sql-server-2000',
- 'database' => 'msdb',
- 'username' => 'sa',
- 'password' => 'test',
- 'prefix' => '',
- ),
这样Laravel也可以连接SQL Server了。
Linux平台使用Freetds连接SQL Server服务器,兼容PHP和Laravel的更多相关文章
- Linux下用freetds执行SQL Server的sql语句和存储过程
Linux下用freetds执行SQL Server的sql语句和存储过程 http://www.linuxidc.com/Linux/2012-06/61617.htm freetds相关 http ...
- 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...
- 使用JDBC连接SQL Server
源文:http://bbs.bc-cn.net/dispbbs.asp?boardid=12&id=140292 整理:秋忆 接触Java或者JSP,难免会使用到数据库SQL Server 2 ...
- JDBC连接SQL Server 2005步骤详解
一.设置SQL Server服务器: 1.“开始” → “程序” → “Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configurati ...
- Sql Server 服务器名称\实例名称 无法连接 Server Name\Instance Name
解决步骤: 1: Sql Server是否已经启动. 2: 检查Sql Server服务器是否开启TCP/IP协议. 侦听的默认端口为1433 3: ping 数据库 ...
- Windows 2008服务器环境PHP连接SQL Server数据库的配置及连接方法
背景: PHP程序常用的数据库是Mysql数据库,但是由于实际项目需要,要求PHP网站连接SQL Server数据库查询一些必要信息.因此,本文就来给大家介绍一下如何安装及配置PHP扩展,可以实现PH ...
- sql server 2008 64位连接sql 2000服务器的时候出现
来源 https://blog.csdn.net/loeley/article/details/7095741 sql server 2008 64位连接sql 2000服务器的时候出现以下提示: 链 ...
- ASP .Net Core 在 CentOS8 ARM 下连接 SQL Server 2008 R2(Hypervisor)
本文主要记录在 ARM 系统下无法连接SQL Server 2008 R2 的解决过程. 解决方案是使用 ODBC 的方式连接数据库,进行操作. 手上有公司的华为鲲鹏云计算 ARM 架构的 CentO ...
- php连接sql server
这两天有个php连接sql server的项目,顺便学习学习sql server 说明: 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是 ...
随机推荐
- 前端性能优化:使用Array.prototype.join代替字符串连接
来源:GBin1.com 有一种非常简单的客户端优化方式,就是用Array.prototype.join代替原有的基本的字符连接的写法.在这个系列的第一篇中,我在代码中使用了基本字符连接: htmlS ...
- Solidworks如何添加齿轮
打开ToolBox,找到GB,动力传动,齿轮,正齿轮,然后拖放到绘图窗口(切记要在装配图里面弄,不是在单个零件里面弄) 设置齿轮的参数,一般只需要设置模数,齿数,面宽,类型,总长度(面宽就是有齿轮 ...
- 聊聊iOS中网络编程长连接的那些事
1.长连接在iOS开发中的应用 常见的短连接应用场景:一般的App的网络请求都是基于Http1.0进行的,使用的是NSURLConnection.NSURLSession或者是AFNetworking ...
- vue - utils.js
exports:导出功能函数或变量 module.exports:默认导出{} ------------------------------------------------------------ ...
- 算法笔记_080:蓝桥杯练习 队列操作(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. 输入格式 第一行一个数字N. 下面N行, ...
- PHP中is_*() 函数用法
PHP中is_*() 函数用法 is_a - 如果对象属于该类或该类是此对象的父类则返回 TRUE is_array - 检测变量是否是数组 is_bool - 检测变量是否是布尔型 is_calla ...
- 优秀运维人员20道必会iptables面试题(转载)
(一)企业面试口试题 1.详述iptales工作流程以及规则过滤顺序? 2.iptables有几个表以及每个表有几个链? 3.iptables的几个表以及每个表对应链的作用,对应企业应用场景? 4.画 ...
- C语言中函数和指针的參数传递
近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家知道C++中有引用的概念,两个 ...
- 13-spring学习-class类型表达式
Class表达式 spring中对于class反射机制也有自己的处理. 1,class::使用T(类名)的形式可以取得一个指定泛型类型的Class对象. 范例: package com.Spring. ...
- golang中使用mongodb
mgo简介 mongodb官方没有关于go的mongodb的驱动,因此只能使用第三方驱动,mgo就是使用最多的一种. mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API ...