php 到 mssql 服务器错误 SSL 提供程序:证书链是由不受信任的机构颁发的

问题描述 投票:0回答:3

首先,我真的很菜鸟。(抱歉) 其次,我尝试将 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 [code] => -2146893019 2 => [Microsoft][适用于 SQL 的 ODBC 驱动程序 18服务器]SSL 提供程序:证书链由不受信任的颁发机构颁发。[消息] => [Microsoft][SQL Server 的 ODBC 驱动程序 18]SSL 提供程序:证书链由不受信任的颁发机构颁发。 ) 1 => 数组 ( [0] => 08001 [SQLSTATE] => 08001 1 => -2146893019 [代码] => -2146893019 2 => [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18]客户端无法建立连接 [消息] => [Microsoft][ODBC Driver 18 for SQL Server]客户端无法建立连接 ) )

附加信息:当我将 dbeaver(不同的电脑)连接到 mssql 服务器(同一服务器)时没有问题。

提前谢谢你

php sql-server ssl sqlsrv
3个回答
3
投票

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

<?php
$serverName = "10.xxx.xx.148";
$connectionInfo = array( 
 "Database"=>"zzzz",
 "UID"=>"ww",
 "PWD"=>"123cccc",
 "TrustServerCertificate"=>true
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
?>

1
投票

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


0
投票

我从 ODBC 驱动程序 18 降级到 ODBC 驱动程序 17。 它可以在 Laravel 9 和 PHP 8.2 中工作

© www.soinside.com 2019 - 2024. All rights reserved.