这是我写的一个接口,本地运行起来webman,我在本地postman去调用它,代码里面只有下图中的两句,作用是去连接远端数据库表查询总数,但是碰到了连接提示我证书链是由不受信任的颁发机构颁发的。
/**
*
* @param Request $request
* @return \support\Response
*/
public function items(Request $request)
{
$result = Db::connection('sqlsrv')->table('Common_Customer')->count();
return $this->successRespond($result);
}
在database.php中的配置如下
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => '连接ip',
'port' => 1433,
'database' => '连接数据库',
'username' => '用户名',
'password' => '密码',
'charset' => 'utf8',
'prefix' => '',
],
[Microsoft][ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的。
php_version=8.0.2
远端sqlserver版本为sqlserver2012
webman版本如下
"require-dev": {
"illuminate/database": ">=8.0",
"phpunit/phpunit": "^9",
"symfony/translation": ">=5.0",
"webman-tech/laravel-translation": "^1.0",
"workerman/webman-framework": "^1.4"
},
此外在服务器上运行时出现[Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL
routines:tls_process_server_certificate:certificate verify failed:self signed certificate]这样的报错,可以看出时证书问题,但目前并没有查出是什么导致的
问题已解决
在数据库的参数值字符串后面加上trustServerCertificate=true就可以了
感谢老铁这篇帖子给我的参考,https://www.workerman.net/q/9402