4

我使用 file_get_contents() 在我的网站中包含 svg 文件。通常这在 http 上运行良好,但我将此站点设置为在本地使用 https。当我这样做时,我收到此错误:

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed on line 226

Warning: file_get_contents(): Failed to enable crypto on line 226

据我所知,这是因为证书是自签名的。我找到了一个在文件获取内容上禁用 SSL 检查的本地解决方案。我使用 cURL 发现了类似的东西。然而,这似乎是一个安全漏洞。有没有办法在不禁用 file_get_contents 或 cURL 中的 SSL 检查的情况下完成这项工作?

4

2 回答 2

2

您需要允许使用自签名证书。为此,您需要定义一个自定义流上下文。

例子:

file_get_contents(
    'https://self-signed.badssl.com/',
    false,
    stream_context_create([
        'ssl' => [
            'allow_self_signed'=> true
        ]
    ])
);
于 2019-03-07T08:54:30.957 回答
0

您也可以尝试升级您的 MAMP 版本。这对我有用。在 MacOS Catalina 上运行 MAMP 时,我在 MAMP 上落后了两个版本,遇到了类似的 SSL 错误,最后在浪费大量时间阅读各种 Stackoverlow 线程以寻求解决方案无济于事后,通过升级 MAMP 最终解决了这个问题。

于 2021-02-04T03:09:26.413 回答