You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:59:55