【发布时间】:2022-11-11 20:53:00
【问题描述】:
首先,我真的很菜鸟。(对不起) 其次,我试图将 php 连接到 mssql 服务器。 第三,我已经安装了 sqlsrv、pdo_sqlsrv 和 msodbcsql.msi 但尝试连接时仍然收到错误消息
我的 php 版本是 8.0.10,x64; 2012 年的 mssql 服务器。
我在 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 的说明,我按照说明安装它。但随后显示我无法解决的新错误。
数组 ( [0] => 数组 ( [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]Client无法建立连接 [消息] => [Microsoft][ODBC Driver 18 for SQL Server]客户端无法建立连接))
附加信息:当我将 dbeaver(不同的 pc)连接到 mssql 服务器(相同的服务器)时没有问题。
先感谢您
【问题讨论】:
-
如果您连接到 PHP 外部的机器,您是否也会收到证书错误?
-
你检查了documentation 还是这个Q&A?
-
@Zhorov,我尝试在附加连接参数中添加 TrustServerCertificate=True。但是当我尝试从 php 主机连接时,错误仍然发生。
-
@user3783243 对不起,我不明白你的意思,我是 mysql 对我来说真的是一个陌生人
-
此行为在 ODBC 和 JDBC 的最新主要版本中有详细记录,例如:ODBC Driver 18.0 for SQL Server Released。可用选项显示在Connection Options。将
TrustServerCertificate设置为1或True将接受SQL Server 的自签名证书。如果您无法正常工作,请Edit您的问题以显示您的确切更改。
标签: php sql-server ssl sqlsrv