我的服务器没有 SSL 证书以获取更多上下文。
我只在 IIS 中观察到此问题,这里有一些示例代码,您可以使用它来复制我的问题
<?php
$ch = curl_init();
$url = "https://example.com";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;
我只能使用 cURL 和
file_get_contents()
通过 HTTP 协议发出成功的 http 请求,但是在向 https URL 发出请求时使用 file_get_contents()
时会出现错误,而在使用 cURL 向 https URL 发出请求时则不会出现任何错误。
我试图搞乱
openssl.cafile
和curl.cainfo
,但从这个答案没有成功。
还要在
allow_url_fopen = On
中设置 allow_url_include = On
和 php.ini
并根据 此 PHP 文档启用 php openSSL 扩展
不过,我只在 IIS 下运行的 PHP 文档中观察到此问题。在 PHP 交互式 shell 中,它按预期工作。
事实证明,我必须将 openssl.cafile
和
curl.cainfo
设置为cacert.pem 文件,您可以在此处获取(或任何其他证书包),并且当您在 IIS 中运行 PHP 时,您必须 授予当前应用程序池身份对证书的读取权限这样PHP的配置实际上可以读取它。
openssl.cafile
和
curl.cainfo
设置为 cacert.pem 文件,您可以在此处获取(或任何其他证书包),当您在 IIS 中运行 PHP 时,您必须 授予当前应用程序池身份对证书的读取权限这样PHP的配置实际上可以读取它。 注意:这并没有从整体上解决我的问题,而且我经常遇到 SSL 版本错误