php 报错 file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086

这个错误是因为使用了 ssl/TLS 加密协议进行 httpS 请求,但是 php 默认情况下不会验证 SSL 证书的有效性,导致在验证 SSL 证书时出现了错误。


解决方法是在调用 file_get_contents 函数前设置一个 context 参数,用来指定 SSL 验证方式。可以参考以下代码:


$context = stream_context_create([
    'ssl' => [
        'verify_peer' => true,
        'verify_peer_name' => true,
        'allow_self_signed' => false
    ]
]);
file_get_contents($url, false, $context);


其中,url是要获取文件的HTTPS地址,context 是一个流上下文,用于设置 SSL 验证选项。以上代码中的 SSL 验证选项表示开启对服务器 SSL 证书的验证,同时禁止使用自签名证书。



如果仍然遇到 SSL 错误,可能是因为服务器的 SSL 证书无效或不是受信任的。在这种情况下,你可以尝试以下解决方法:


禁用 SSL 验证:请注意,禁用 SSL 验证可能会带来安全风险,请谨慎使用。你可以尝试在调用 file_get_contents 函数前设置一个 context 参数,将 SSL 验证选项设置为 false。示例代码如下:

$context = stream_context_create([
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
    ]
]);
file_get_contents($url, false, $context);


更新 CA 证书:如果服务器的 SSL 证书是有效的,但你的 PHP 环境没有最新的 CA(Certificate Authority)证书库,可能会导致验证失败。你可以尝试更新 CA 证书库,具体步骤取决于你的操作系统和 PHP 配置。


更换获取文件内容的方法:除了使用 file_get_contents 函数,你还可以尝试使用其他 HTTP 请求库,例如 cURL。cURL 提供了更多的配置选项,可以更灵活地处理 SSL 验证问题。


相关阅读

添加新评论