Linux 《CentOS 7.2》之 Laravel 5.7 通信 sql server 2000 教程

> 前序:遇到一个非常老的 sql server 2000 数据库,做数据转移。就想直接用 laravel 调用。

## 工具箱

>* 操作系统:CentOS 7.2

>* 运行环境: 宝塔 5.9

>* PHP版本: 7.2 (选安装 pdo_odbc 扩展)

>* Laravel 版本: 5.7

>* SQL Server 版本: 2000 (需要安装 sp4 补丁)

>* FreeTDS 版本: v0.95.81

>* UnixODBC 版本: 2.3.1

## 一、宝塔 5.9 环境安装:

#### 1、安装: 不做详解 [传送门](https://www.bt.cn/bbs/thread-1186-1-1.html)

#### 2、选择安装需要 php 版本等 如图:

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/9R0i943yOU.png?imageView2/2/w/1240/h/0)

## 二、安装 UnixODBC FreeTDS

#### 1、UnixODBC 相关安装 具体参考:[传送门](https://blog.csdn.net/lgq421033770/article/details/51123803)

```

yum -y install unixODBC-*

```

#### 2、FreeTDS 相关安装 具体参考:[传送门](https://blog.csdn.net/xhu_eternalcc/article/details/12576907)

```

yum install freetds

```

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/G31QjCkWyh.png?imageView2/2/w/1240/h/0)

#### 3、UnixODBC 加载 FreeTDS 驱动

查看 /usr/lib64 里面是否有 libtdsodbc.so 驱动文件 如果没有请重命名 命令如下

```

cd /usr/lib64

mv libtdsodbc.so.0.0.0 libtdsodbc.so

```

修改 /etc/odbcinst.ini 添加  FreeTDS 驱动

```

vi /etc/odbcinst.ini

```

最后面添加下面代码

```

[FreeTDS]

Description = ODBC for FreeTDS

Driver64 = /usr/lib64/libtdsodbc.so

Setup64 = /usr/lib64/libtdsodbc.so

FileUsage = 1

```

:wq! 保存退出

#### 4、FreeTDS 关联远程 SQL Server 2000 数据库

```

vi /etc/freetds.conf

```

```

[SqlServer20]

host = 192.168.0.133

port = 1433

tds version = 8.0

client charset = UTF-8

```

## 三、PHP7.2 pdo_odbc 扩展安装

进入 ssh 命令行

具体参考: [传送门](https://blog.csdn.net/lgq421033770/article/details/51123803)

#### 1、编译安装

```

wget http://cn2.php.net/distributions/php-7.2.10.tar.gz

tar xzf php-7.2.10.tar.gz

cd php-7.2.10/ext/pdo_odbc

/www/server/php/72/bin/phpize

./configure --with-php-config=/www/server/php/72/bin/php-config --with-pdo-odbc=unixODBC,/usr

make

make install

```

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/RBVEpDOVqv.png?imageView2/2/w/1240/h/0)

#### 2、php引用 pdo_odbc 扩展驱动

修改 php.ini 文件

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/JNYDDi4YMJ.png?imageView2/2/w/1240/h/0)

php.ini 文件最后面添加下面代码

其中 no-debug-non-zts-20170718 文件夹需要对应 make install 命令后的返回地址

```

extension = /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so

```

#### 3、重启 PHP

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/7Qr9D0cK5b.png?imageView2/2/w/1240/h/0)

#### 4、查看 phpinfo odbc 是否支持

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/TTxZqRlIMv.png?imageView2/2/w/1240/h/0)

PDO drivers 包含 ODBC 证明已经开启

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/oz9hO9eTqj.png?imageView2/2/w/1240/h/0)

## 四、创建网站 安装 Laravel 5.7

#### 1、通过宝塔创建网站(不做详解)

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/UOxRZkiMsj.png?imageView2/2/w/1240/h/0)

#### 2、删除禁用函数 proc_open

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/KGDsXsyPjX.png?imageView2/2/w/1240/h/0)

#### 3、升级 composer

```

composer self-update

```

#### 4、使用 composer 国内镜像

```

composer config -g repo.packagist composer https://packagist.laravel-china.org

```

#### 5、安装最新版 laravel 5.7

```

cd /www/wwwroot/laravel.test

composer create-project --prefer-dist laravel/laravel ./

```

#### 6、修改网站运行目录 laravel 对应 public 目录

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/2KtazS7P3I.png?imageView2/2/w/1240/h/0)

#### 7、修改目录权限为 755 所有者 www

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/JARyh0txHK.png?imageView2/2/w/1240/h/0)

## 五、安装 tck/odbc  ODBC larave 扩展包

具体参考:[传送门](https://packagist.org/packages/tck/odbc)

```

composer require tck/odbc

```

#### 1、修改 .evc 文件 最后添加一下内容

Servername 对应 freetds.conf 配置

```

ODBC_DB_DSN="odbc:Driver={FreeTDS};Servername=SqlServer20;Database=laravel"

ODBC_DB_USERNAME=sa

ODBC_DB_PASSWORD=

```

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/Opedp7u7SB.png?imageView2/2/w/1240/h/0)

#### 2、引入 tck/odbc 扩展包

修改 config/app.php Service Provider

```

/*

        * Package Service Providers...

        */

        TCK\Odbc\OdbcServiceProvider::class,

```

#### 3、修改 config/database.php

connections 内添加

```

'odbc'  => [

            'driver'  => 'odbc',

            'dsn'      => env('ODBC_DB_DSN', 'odbc:DB_CONNECTION_STRING'), //

            'host'    => env('ODBC_DB_HOST', 'localhost'),

            'database' => env('ODBC_DB_DATABASE', 'forge'),

            'username' => env('ODBC_DB_USERNAME', 'forge'),

            'password' => env('ODBC_DB_PASSWORD', ''),

            'charset' => 'utf8',

        ],

```

## 六、测试 SQL Server 20000 通信

### 1、laravel 篇

#### 1⃣️修改 .env 配置文件

```

DB_CONNECTION=odbc

```

#### 2⃣️修改 routes/web.php 代码测试

```

<?php

use Illuminate\Support\Facades\DB;

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

$users = DB::select('select * from users where id = 1');

dd($users);

Route::get('/', function () {

    return view('welcome');

});

```

### 2、访问 laravel.test

保证数据库存在 users 表 并且存在 id 1这条数据

[图片]![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/pgVxGozrB3.png?imageView2/2/w/1240/h/0)

> 如果正常返回数据。到此结束。

报错

![file](https://iocaffcdn.phphub.org/uploads/images/201809/19/19816/bSMzrZ7DyK.png?imageView2/2/w/1240/h/0)

> 如果报错 请继续阅读 3、sql server 2000 篇

### 3、SQL Server 2000 篇

上面报错原因分析:

#### 1⃣️ SQL Server服务是否正常开启

#### 2⃣️ 服务器防火墙 1433 端口是否开启

#### 3⃣️ SQL Server 2000 打 sp4 补订

[下载 sp4 补订](https://www.microsoft.com/en-us/download/details.aspx?id=18290)

查询 SQL Server 2000 版本

```

SELECT @@VERSION

```

显示结果如下:

```

Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)  May  3 2005 23:18:38  Copyright (c) 1988-2003 Microsoft Corporation  Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

```

![file](https://iocaffcdn.phphub.org/uploads/images/201809/20/19816/92r3pKl99T.png?imageView2/2/w/1240/h/0)

至此 SQL Server 2000 sp4 补丁安装完成

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • # 一、框架概述 # 课程概述 1. laravel 4天(之前TP框架还是很大的区别)(国外框架) 2. 在线教...
    关进一阅读 359评论 0 0
  • # 为什么要学习composer? 由于我们要学习的laravel框架底层是syfomy框架。syfomy框架底层...
    Yu_b29b阅读 648评论 0 0
  • 官方文档链接 一、添加依赖 maven project 注:Mac 上开发,使用SqlServer,所以需要jtd...
    天涯笑笑生阅读 464评论 0 1
  • 昨夜,下起了小雨,打乱了周末计划。心想,既然不能外出,那就在家享受一个安静的周末吧! 推开窗子,清新的空气扑面而来...
    会跳舞的钢琴阅读 286评论 0 1
  • 这段时间总有朋友和我说,做客栈做得成功应该总结下来就是两个字----“情怀”。 我想说,醉叶居离成功还很远...
    liladream阅读 305评论 3 0