SSL 证书验证过程中出现 pdo_sqlsrv 错误

问题描述 投票:0回答:1

使用 ubuntu 22、php8.2、odbc 驱动程序 18、OpenSSL 3.0.2,当我尝试使用 pdo_sqlsrv 连接 sqlsrv 数据库时,它返回以下错误:

SQLSTATE[08001]:[Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18]SSL 提供程序:[错误:0A000086:SSL 例程::证书验证失败:自签名证书]

我使用过的代码:

<?php
$sSGBD = "sqlsrv";
$sDatabase = "db_Des";
$sServer = "10...24";
$sUser = "aplic_...";
$sPwd = "....";


try {
        if(!$oPDO) {
                $oPDO = new PDO ("$sSGBD:Server=$sServer;Database=$sDatabase","$sUser","$sPwd");
                $oPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
        } catch(PDOException $e) {
              echo $e->getMessage();
        }

我有一台使用 Debian 11、php 7.3、ODBC 17、openssl 1.1 和 pdo_sqlsrv 的生产服务器,它与我的 2008 sqlsrv 数据库连接良好。我已经尝试使用具有相同规格的另一台服务器(Debian 11、php 7.3、ODBC 17、openssl 1.1(相同配置))运行该脚本,但它返回了我在 ubuntu 22 中遇到的相同错误。

在我使用 ubuntu 22 的 php 8.2 安装中,我尝试连接 sqlsrv 2008 和 sqlsrv 2022,但没有成功。

php ubuntu pdo sqlsrv
1个回答
0
投票
PDO::SQLSRV_ATTR_DIRECT_QUERY => true,
PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8
© www.soinside.com 2019 - 2024. All rights reserved.