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

rnmwe5a2  于 2023-10-17  发布在  其他
关注(0)|答案(2)|浏览(113)

使用ubuntu 22,php8.2,odbc driver 18,OpenSSL 3.0.2,当我尝试使用pdo_sqlsrv连接sqlsrv数据库时,它返回我这个错误:
SQLSTATE[08001]:[Microsoft][ODBC Driver 18 for SQL Server]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,但它不工作。

gtlvzcf8

gtlvzcf81#

TrustServerCertificate=false或TrustServerCertificate=true
你可以尝试使用pdo dsn参数

5lhxktic

5lhxktic2#

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

相关问题