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
我使用 ODBC 驅(qū)動程序 17 而不是 ODBC 驅(qū)動程序 18,問題已解決。就我而言,我不需要加密,因此驅(qū)動程序 17 對我來說沒問題。
以防萬一有人想知道如何將 TrustServerCertificate 定義為 1,我就是這樣做的,我將參數(shù)添加為新的數(shù)組元素,如下所示
<?php $serverName = "10.xxx.xx.148"; $connectionInfo = array( "Database"=>"zzzz", "UID"=>"ww", "PWD"=>"123cccc", "TrustServerCertificate"=>true ); $conn = sqlsrv_connect( $serverName, $connectionInfo); ?>