SSL-Anbieterfehler: Zertifikatskette, die von einer nicht vertrauenswürdigen Stelle in PHP an MSSQL Server ausgestellt wurde
P粉338969567
P粉338969567 2023-10-30 18:03:00
0
2
797

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粉338969567
P粉338969567

Antworte allen(2)
P粉545956597

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

P粉327903045

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

<?php
$serverName = "10.xxx.xx.148";
$connectionInfo = array( 
 "Database"=>"zzzz",
 "UID"=>"ww",
 "PWD"=>"123cccc",
 "TrustServerCertificate"=>true
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
?>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage