【发布时间】:2019-12-17 08:19:15
【问题描述】:
我在我的 Laravel 5.8 项目中使用 Guzzle
我正在尝试在 https 上提供对 URL(签名证书)的 GET 服务
“https://172.1.1.1:443/accounts”
public static function get($url) {
// dd($url);
try {
$client = new Client();
$options = [
'http_errors' => true,
'connect_timeout' => 3.14,
'read_timeout' => 3.14,
'timeout' => 3.14,
'curl' => array(
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
)
];
$headers = [
'headers' => [
'Keep-Alive' => 'timeout=300'
]
];
$result = $client->request('GET', $url, $headers, $options);
// dd($result);
} catch (ConnectException $e) {
//Logging::error($e);
return null;
}
return json_decode($result->getBody(), true);
}
我已经用过这两个标志了
CURLOPT_SSL_VERIFYHOST => false,
URLOPT_SSL_VERIFYPEER => false
我不知道为什么我一直得到,
【问题讨论】:
-
您是否使用 cacert 配置了 php.ini? github.com/guzzle/guzzle/issues/1935#issuecomment-371756738(或下面的答案)带有自定义证书
-
根据 PHP 文档,
CURLOPT_SSL_VERIFYHOST的值应该是数字,而不是布尔值(特别是:0将其关闭 [不建议在生产中使用]) .见here。