SQLServer连接报错及微软源GPG公钥验证失败求助
解决SQL Server ODBC驱动安装的公钥签名错误及连接问题
1. 修复微软Debian源的公钥签名错误
你遇到的NO_PUBKEY EB3E94ADBE1229CF错误是因为Debian/Ubuntu新版本不再支持旧的apt-key导入方式,需用gpg将公钥导入系统信任目录:
- 下载并转换微软公钥:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg - 将公钥移动到系统信任的密钥目录:
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg - 设置正确的文件权限:
sudo chmod 644 /etc/apt/trusted.gpg.d/microsoft.gpg - 再次执行源更新:
sudo apt-get update
2. 安装匹配版本的Microsoft ODBC Driver for SQL Server
你的pdo_sqlsrv版本为5.11.1,兼容ODBC Driver 17和18,按以下步骤安装:
- 未添加过微软源的话先执行添加命令:
echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs)/prod $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mssql-release.list - 安装ODBC Driver 18(推荐版本):
sudo apt-get install -y msodbcsql18 - 安装PHP扩展依赖的unixODBC开发包:
sudo apt-get install -y unixodbc-dev
3. 验证SQL Server连接
安装完成后,用以下代码测试连接(替换为你的服务器信息):
<?php $serverName = "你的SQL Server地址,1433"; $connectionOptions = [ "Database" => "目标数据库名", "Uid" => "数据库用户名", "PWD" => "数据库密码" ]; $conn = sqlsrv_connect($serverName, $connectionOptions); if ($conn === false) { die(print_r(sqlsrv_errors(), true)); } echo "连接成功"; sqlsrv_close($conn); ?>
额外注意事项:
- 确认SQL Server已开启远程连接权限
- 服务器防火墙允许1433端口的入站请求
- 数据库账号具备远程访问权限
内容的提问来源于stack exchange,提问作者Suvier
相关产品推荐
相关产品推荐

