📅  最后修改于: 2023-12-03 15:18:19.918000             🧑  作者: Mango
在使用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
选项,以确保您正在连接到预期的主机。
您也可以通过配置 php.ini
文件来禁用SSL验证。可以通过 openssl.cafile
选项设置一个空字符串的值来实现。
openssl.cafile = ""
在使用PHP中获取HTTPS网页时,您可能需要禁用SSL验证。您可以使用 stream_context_create()
函数来创建一个上下文流,该流可用于在 file_get_contents()
中禁用SSL验证。您也可以通过配置 php.ini
文件来禁用SSL验证。但是,请注意,这不能在生产环境中使用,并且会增加安全风险。