📌  相关文章
📜  php file_get_contents 禁用 ssl 检查 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:19.918000             🧑  作者: Mango

PHP中禁用SSL检查的方法

在使用PHP中的 file_get_contents() 函数获取HTTPS网页时,有时会收到以下错误信息:

file_get_contents(): SSL operation failed with code 1. 
OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

这是因为 file_get_contents() 函数在默认情况下会验证SSL证书。如果你在测试环境中或者随意使用网上信息,你可能需要禁用验证SSL证书。在本文中,我们将讨论如何在PHP中禁用SSL验证。

使用 context 参数

PHP提供了 stream_context_create() 函数,可用于创建一个上下文流,该流可用于在 file_get_contents() 中禁用SSL验证。以下是禁用SSL验证时 file_get_contents() 函数的示例代码:

<?php

$url = 'https://example.com';

$options = [
  'ssl' => [
    'verify_peer' => false,
    'verify_peer_name' => false
  ]
];

$context = stream_context_create($options);

$data = file_get_contents($url, false, $context);

echo $data;

在上面的示例代码中,我们使用 stream_context_create() 函数创建了一个 context 参数。在这个上下文流中,我们设置了一个SSL选项数组,它禁用了对证书的验证。然后我们将该上下文流传递给 file_get_contents() 函数。

请注意,您在实际代码中应该尽可能使用 verify_peer_name 选项,以确保您正在连接到预期的主机。

禁用SSL验证

您也可以通过配置 php.ini 文件来禁用SSL验证。可以通过 openssl.cafile 选项设置一个空字符串的值来实现。

openssl.cafile = ""
结论

在使用PHP中获取HTTPS网页时,您可能需要禁用SSL验证。您可以使用 stream_context_create() 函数来创建一个上下文流,该流可用于在 file_get_contents() 中禁用SSL验证。您也可以通过配置 php.ini 文件来禁用SSL验证。但是,请注意,这不能在生产环境中使用,并且会增加安全风险。