linux 环境 Laravel 连接 MS Sql

linux 环境 Laravel 连接 MS Sql

1、安装freetds

  • 下载源码并解压

cd  /

wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz

tar zxvf freetds-stable.tgz 

cd freetds-*.*

./configure --prefix=/usr/local/freetds

gmake

gmake install

完成后,路径文件/usr/local/freetds

 

测试连接 /usr/local/bin/tsql -H 192.0.0.1 -p 3433 -U sa -P test

linux 环境 Laravel 连接 MS Sql

 

2、配置freetds.conf

增加阿里云数据库配置:

linux 环境 Laravel 连接 MS Sql

 

3、php-config目录和phpize目录

查找whereis php-config    找到:/usr/bin/php-config

查找whereis phpize    找到:/usr/bin/phpize

4、编译安装mssql扩展

以php-5.6为例,用到的路径见 3所示

cd /

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

tar -zxvf php-5.6.40.tar.gz

cd /php-5.6.40/ext/mssql

/usr/bin/phpize

./configure --with-php-config=/usr/bin/php-config --with-mssql=/usr/local/freetds

make && make install

编译完成可以到 /usr/lib64/php/modules 目录下看看是否生成文件(mssql.so)

linux 环境 Laravel 连接 MS Sql

 

在/etc/php.d目录下新建mssql.ini 文件,输入以下内容

; Enable mssql extension module

extension=mssql.so

引用扩展后,重启web服务,通过phpinfo查看扩展mssql是否开启成功

linux 环境 Laravel 连接 MS Sql

 

这样PHP就能加载SQL Server驱动了。使用如下代码测试PHP连接SQL Server

4.1、连接测试

Route::get('/sql', function () {
   
$serverName='ip:3433';
   
$conn=mssql_connect($serverName,'sa','23$');
   
if($conn){
       
return '连接成功';
    }
else{
       
return '连接失败';
    }
});

linux 环境 Laravel 连接 MS Sql

 

5、编译pdo_dblib.so扩展适配Laravel

5.1、编译pdo_dblib.so

cd /php-5.6.40/ext/pdo_dblib

/usr/bin/phpize

./configure --with-php-config=/usr/bin/php-config --with-pdo_dblib=/usr/local/freetds

make && make install

linux 环境 Laravel 连接 MS Sql

 

到/etc/php.d下新建pdo_dblib.ini,输入以下内容

; Enable pdo_dblib extension module

extension=pdo_dblib.so

linux 环境 Laravel 连接 MS Sql

 

用phpinfo()查看配置是否成功

linux 环境 Laravel 连接 MS Sql

 

5.2、编辑laravel的sqlsrv 配置

再编辑Laravel的app/config/database.php文件,将sqlsrv区域改为一下形式

'sqlsrv' => array(

                        'driver'   => 'sqlsrv',

                        'host'     => 'sql-server-2000',

                        'database' => 'msdb',

                        'username' => 'sa',

                        'password' => 'test',

                        'prefix'   => '',

                ),

这样Laravel也可以连接SQL Server了。

若无法连接可以执行composer update 看看报了啥错误

6、重启linux 部分配置

service php-fpm restart

service nginx restart

7、参考,感谢作者

https://blog.****.net/wobushinix/article/details/77722455  主要mssql

https://blog.****.net/phpwww/article/details/40421807

https://blog.****.net/skykingf/article/details/44595073   有laravel连接sql说明

https://blog.****.net/weixin_34314962/article/details/93155138  编译pdo_dblib

https://www.jianshu.com/p/c87443bd1e39  安装odbc和freetds

8、应用环境

阿里云

ECS 系统centos 7.3 x64

php 5.6  php-fpm5.6 laravel 5.4

系统 RDS  SQL Server 2016 WEB