首先,我真的很菜鳥。 (抱歉) 其次,我嘗試將 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 =>; Driver 18 for SQL Server] SSL 提供者:憑證鏈由不受信任的頒發機構所頒發。[訊息] => [Microsoft][ODBC Driver 18 for SQL Server]SSL 提供者:憑證鏈由不受信任的頒發機構頒發。)1 => 陣列( [0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [代碼] => -2146893019 2 => [Microsoft][ forBCr 18OD 數字SQL Server]用戶端無法建立連線[訊息] => [Microsoft][ODBC Driver 18 for SQL Server]用戶端無法建立連線) )
附加資訊:當我將 dbeaver(不同的電腦)連接到 mssql 伺服器(同一台伺服器)時沒有問題。
提前謝謝
我使用 ODBC 驅動程式 17 而不是 ODBC 驅動程式 18,問題已解決。就我而言,我不需要加密,因此驅動程式 17 對我來說沒問題。
萬一有人想知道如何將TrustServerCertificate 定義為1,我就是這樣做的,我將參數新增為新的陣列元素,如下所示