SSL 提供程序错误:由 PHP 中不受信任的机构向 MSSQL Server 颁发的证书链
P粉338969567
P粉338969567 2023-10-30 18:03:00
0
2
792

首先,我真的很菜鸟。(抱歉) 其次,我尝试将 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 服务器(同一服务器)时没有问题。

提前谢谢

P粉338969567
P粉338969567

全部回复(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);
?>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板