首先,我真的很菜鸟。(抱歉) 其次,我尝试将 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 服务器(同一服务器)时没有问题。
提前谢谢
我使用 ODBC 驱动程序 17 而不是 ODBC 驱动程序 18,问题已解决。就我而言,我不需要加密,因此驱动程序 17 对我来说没问题。
以防万一有人想知道如何将 TrustServerCertificate 定义为 1,我就是这样做的,我将参数添加为新的数组元素,如下所示