php7.3.4连接sqlserver(linux平台)

前言

有个项目需要手上laravel连接客户的sqlserver数据库读取数据,故在docker运行的php容器,需要增加扩展。

过程

容器是基于debian11

1.通过 curl 下载 Microsoft 的 GPG 密钥,并通过 apt-key add 添加到系统密钥链中,以便后续能够验证从 Microsoft 软件包库下载的软件包。

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

如果报错gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation 就先执行这段(因为缺少 gnupg 相关的软件包。使用命令安装 gnupg2)

apt-get update && apt-get install -y gnupg2 

2.选择合适的版本安装mssql-release.list

#Debian 8
curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list

3.安装各种依赖

#更新系统的软件包列表,以包括新添加的 Microsoft 软件包源。
ACCEPT_EULA=Y apt-get install msodbcsql17
#安装 Microsoft ODBC 驱动程序,接受 EULA 条款。
ACCEPT_EULA=Y apt-get install mssql-tools
#安装 Microsoft SQL Server 相关的工具,如 bcp 和 sqlcmd&配置环境变量
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
#添加 Microsoft 工具的路径到用户的 .bash_profile 和 .bashrc 文件,并立即应用这些变更。
apt-get install unixodbc-dev
# apt-get install libgssapi-krb5-2
apt-get install libgssapi-krb5-2

4.安装sqlServer php扩展

apt-get -y install unixodbc-dev
pecl install sqlsrv-5.9.0 && pecl install pdo_sqlsrv-5.9.0
tar zxvf sqlsrv-5.9.0.tgz && tar zxvf pdo_sqlsrv-5.9.0.tgz
mv sqlsrv-5.9.0 /usr/src/php/ext/sqlsrv && mv pdo_sqlsrv-5.9.0 /usr/src/php/ext/pdo_sqlsrv
docker-php-ext-install sqlsrv && docker-php-ext-install pdo_sqlsrv

使用larave连接

因为项目已经使用了mysql,希望的效果是不影响原数据

  1. .env写入配置
SRV_CONNECTION=sqlsrv
SRV_DB_HOST=192.168.1.1
SRV_DB_PORT=1433
SRV_DB_DATABASE=test_sqldb
SRV_DB_USERNAME=sa
SRV_DB_PASSWORD=123456

2.database.php修改

'sqlsrv' => [
	'driver' => 'sqlsrv',
	'host' => env('SRV_DB_HOST', 'localhost'),
	'port' => env('SRV_DB_PORT', '1433'),
	'database' => env('SRV_DB_DATABASE', 'forge'),
	'username' => env('SRV_DB_USERNAME', 'forge'),
	'password' => env('SRV_DB_PASSWORD', ''),
	'charset' => 'utf8',
	'prefix' => '',
	'prefix_indexes' => true,
],

3.代码内使用

// 使用默认的 MySQL 连接
//$users = DB::table('users')->get();

// 使用 SQL Server 连接
$sqlServerUsers = DB::connection('sqlsrv')->table('dbo.user')->get()->toArray();

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 11:34:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 11:34:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 11:34:03       82 阅读
  4. Python语言-面向对象

    2024-03-13 11:34:03       91 阅读

热门阅读

  1. 【Docker】APISIX Dashboard 容器化部署

    2024-03-13 11:34:03       43 阅读
  2. ubuntu 更换国内镜像源

    2024-03-13 11:34:03       40 阅读
  3. [element-ui] el-table组件滚动条的宽度设置

    2024-03-13 11:34:03       33 阅读
  4. 刨析目前市面上各注册中心产品的优劣势

    2024-03-13 11:34:03       35 阅读
  5. k8s Helm3详解 (部署,自定义,仓库,)

    2024-03-13 11:34:03       28 阅读
  6. vue3+elementPlus项目支持设置默认附件

    2024-03-13 11:34:03       43 阅读
  7. Kotlin Retrofit 网络请求

    2024-03-13 11:34:03       40 阅读
  8. Unity 地图数据生成

    2024-03-13 11:34:03       39 阅读
  9. Spring Boot- Validation

    2024-03-13 11:34:03       34 阅读
  10. LeetCode题练习与总结:搜索旋转排序数组

    2024-03-13 11:34:03       39 阅读
  11. 【leetcode热题】反转字符串中的单词

    2024-03-13 11:34:03       46 阅读