搜索

首页  >  问答  >  正文

SSL 提供程序错误:由 PHP 中不受信任的机构向 MSSQL Server 颁发的证书链

首先,我真的很菜鸟。(抱歉) 其次,我尝试将 php 连接到 mssql 服务器。 第三,我已经安装了 sqlsrv、pdo_sqlsrv 和 msodbcsql.msi 但尝试连接时仍然收到错误消息

我的php版本是8.0.10,x64; mssql 服务器 2012。

我的 php 代码用于测试连接:

<?php
$serverName = "10.xxx.xx.148";
$connectionInfo = array( "Database"=>"zzzz", "UID"=>"ww","PWD"=>"123cccc");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
 echo "Connection established.<br />";
}else{
 echo "Connection could not be established.<br />";
 die( print_r( sqlsrv_errors(), true));}
?>

然后我收到错误,并指示安装 msodbcsql.msi,我按照指示安装它。但随后显示我无法解决的新错误。

Array ( [0] => Array ( [0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [代码] => -2146893019 2 => [Microsoft][ODBC Driver 18 for SQL Server] SSL 提供程序:证书链由不受信任的颁发机构颁发。[消息] => [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序:证书链由不受信任的颁发机构颁发。)1 => 数组 ( [0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [代码] => -2146893019 2 => [Microsoft][ODBC Driver 18 for SQL Server]客户端无法建立连接 [消息] => [Microsoft][ODBC Driver 18 for SQL Server]客户端无法建立连接 ) )

附加信息:当我将 dbeaver(不同的电脑)连接到 mssql 服务器(同一服务器)时没有问题。

提前谢谢

P粉338969567P粉338969567449 天前839

全部回复(2)我来回复

  • P粉545956597

    P粉5459565972023-10-31 10:06:43

    我使用 ODBC 驱动程序 17 而不是 ODBC 驱动程序 18,问题已解决。就我而言,我不需要加密,因此驱动程序 17 对我来说没问题。

    回复
    0
  • P粉327903045

    P粉3279030452023-10-31 09:22:33

    以防万一有人想知道如何将 TrustServerCertificate 定义为 1,我就是这样做的,我将参数添加为新的数组元素,如下所示

    <?php
    $serverName = "10.xxx.xx.148";
    $connectionInfo = array( 
     "Database"=>"zzzz",
     "UID"=>"ww",
     "PWD"=>"123cccc",
     "TrustServerCertificate"=>true
    );
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    ?>

    回复
    0
  • 取消回复