Laravel 连接 SQL Server 之 Linux 系统安装 unixODBC 和 Microsoft ODBC 驱动

Laravel 连接 SQL Server 数据库需要进行以下配置:

1. 安装必要的扩展

  1. 对于 Linux 系统,需要安装 unixODBC 和 Microsoft ODBC 驱动

  2. 对于 Windows 系统,确保安装了 SQL Server Native Client 或 ODBC Driver for SQL Server

  3. PHP 需要安装 pdo_sqlsrv 和 sqlsrv 扩展

2. Linux 安装 SQL Server 驱动

laravel 报错

previous exception object (PDOException(code: IMSSP): SQLSTATEIMSSP: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712

这个错误表明你的 PHP 环境缺少 Microsoft ODBC Driver for SQL Server

CentOS/RHEL 系统安装配置:

bash 复制代码
# 安装 unixODBC
sudo yum install -y unixODBC unixODBC-devel

此处注意下,安装的是 msodbcsql18

bash 复制代码
# 添加 Microsoft 仓库并安装 ODBC 驱动
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/$(rpm -E %rhel)/prod.repo
sudo yum remove -y unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install -y msodbcsql18 mssql-tools18

验证 ODBC 驱动安装

bash 复制代码
odbcinst -q -d 

3. 常见问题

msodbcsql18 装上后,laravel 运行报错:

previous exception\] \[object\] (PDOException(code: 08001): SQLSTATE\[08001\]: \[unixODBC\]\[Microsoft\]\[ODBC Driver 18 for SQL Server\]SSL Provider: \[error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate

官方解释是 应用程序无法验证 SQL Server 的 SSL 证书,通常是因为 SQL Server 使用了自签名证书

找了好久没解决这个问题,而且以前也没遇见过。想别的办法

考虑下是否是版本问题

bash 复制代码
sudo yum list available | grep msodbcsql

前面安装的是msodbcsql18 ,卸载,重新安装13

bash 复制代码
#卸载18
yum remove msodbcsql18
# 安装 msodbcsql 13,注意文件名
ACCEPT_EULA=Y yum install -y msodbcsql

测试

php 复制代码
 //数据库服务器地址,注意实例和端口的写法
$serverName = '192.168.116.180\testsyna,11552';
$uid = 'mssa';     //数据库用户名
$pwd = '123456'; //数据库密码
$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database" => 'test001');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn == FALSE){
    echo "连接失败!";
    var_dump(sqlsrv_errors());
    exit;
}else{
    echo "链接成功";
}

echo "连接成功!";exit;

测试通过,运行正常'

总结下:不同版本的sqlserver对应的 msodbcsql 版本是不一样的。其次连接的时候,要注意端口和实例名的字符串写法。

相关推荐
DigitalOcean11 天前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
zzqssliu18 天前
基于Laravel + Express.js的代购系统多语言多货币架构设计
javascript·express·laravel
zuowei288918 天前
Laravel 9.x核心特性全解析
php·laravel
2501_9127840818 天前
跨境电商独立站技术选型:为什么React+Vue+Laravel成为主流?
vue.js·react.js·laravel·taocarts
右耳朵猫AI22 天前
PHP周刊2026W22 | WordPress 7.0发布、Laravel 13.10.0、Polyfill 1.38.1、Symfony 8.1
php·laravel·symfony
2501_912784081 个月前
跨境电商独立站的多语言架构设计:基于 Laravel + Vue.js 的实践
vue.js·php·laravel·跨境电商·taocarts
JaguarJack1 个月前
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
后端·php·laravel
ELI_He9991 个月前
Laravel Sail
php·laravel
AI行业学习1 个月前
CC-Switch 下载、安装与使用配置指南【2026.5.29】
java·开发语言·vscode·python·eclipse·laravel
zzqssliu1 个月前
反向海淘跨境代购系统架构设计:基于Laravel+Vue+React的实战拆解
vue.js·系统架构·laravel