Heim  >  Fragen und Antworten  >  Hauptteil

SSL-Anbieterfehler: Zertifikatskette, die von einer nicht vertrauenswürdigen Stelle in PHP an MSSQL Server ausgestellt wurde

Zuallererst bin ich wirklich ein Neuling. (Leid tun) Zweitens habe ich versucht, PHP mit dem MSSQL-Server zu verbinden. Drittens habe ich sqlsrv, pdo_sqlsrv und msodbcsql.msi installiert Beim Versuch, eine Verbindung herzustellen, wird jedoch immer noch eine Fehlermeldung angezeigt

Meine PHP-Version ist 8.0.10, x64; MSSQL-Server 2012.

Mein PHP-Code zum Testen der Verbindung:

<?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));}
?>

Dann erhielt ich eine Fehlermeldung und wurde angewiesen, msodbcsql.msi zu installieren. Ich habe es wie angewiesen installiert. Aber dann werden neue Fehler angezeigt, die ich nicht beheben kann.

Array ( [0] => Array ( [0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [Code] => -2146893019 2 => [Microsoft][ODBC-Treiber 18 für SQL Server] SSL-Anbieter: Die Zertifikatskette wurde von einer nicht vertrauenswürdigen Behörde ausgestellt. [Nachricht] => [Microsoft][ODBC-Treiber 18 für SQL Server] SSL-Anbieter: Die Zertifikatskette wurde von einer nicht vertrauenswürdigen Behörde ausgestellt ; Array ([0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [Code] => -2146893019 2 => [Microsoft][ODBC-Treiber 18 für SQL Server ]Client kann keine Verbindung herstellen [Nachricht] => [Microsoft][ODBC-Treiber 18 für SQL Server]Client kann keine Verbindung herstellen) )

Zusätzliche Informationen: Es gibt kein Problem, wenn ich dbeaver (anderer PC) mit dem MSSQL-Server (dem gleichen Server) verbinde.

Vielen Dank im Voraus

P粉338969567P粉338969567376 Tage vor720

Antworte allen(2)Ich werde antworten

  • P粉545956597

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

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

    Antwort
    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);
    ?>

    Antwort
    0
  • StornierenAntwort