gpt4 book ai didi

PHP file_get_contents() SSL 操作失败,代码为 1

转载 作者:行者123 更新时间:2023-12-04 15:05:47 25 4
gpt4 key购买 nike

我想以“ 我是个白痴”开头这个问题,但我真的可以使用一些帮助。
我有一个由 GoDaddy 托管的 PHP 站点。在过去的几年里,我一直在使用 file_get_contents() 将一个简单的 XML 页面读入我网站的 mySQL 数据库中。今年一月,我开始收到以下警告。

Warning: file_get_contents() [function.file-get-contents]: SSL operation failed with code 1. OpenSSL Error messages: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure


Warning: file_get_contents() [function.file-get-contents]: Failed to enable crypto


Warning: file_get_contents(https://api.competitionsuite.com/2013-02/Competitions/?o=C35091BF-0F25-4C86-A5AA-C7714E38112C) [function.file-get-contents]: failed to open stream


在此之前,我没有该站点的 SSL 证书,所以我从 GoDaddy 购买了基本的证书,希望这可以解决错误,但即使在 HTTPS 站点上,我也遇到了相同的错误。
这是我的代码片段,但如果我需要提供更多信息,请告诉我。
//read XML
$url = 'https://api.competitionsuite.com/2013-02/Competitions/?o=C35091BF-0F25-4C86-A5AA-C7714E38112C';
$context = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));

$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
如果有人有空闲时间,我真的可以使用一些指导。 TIA

最佳答案

问题似乎出在函数 file_get_contents(..) 上以简单的方式不适用于 SSL(https 网站)。
简单的解决办法:
您可以创建这样的功能 - 您只需要启用 curl PHP 中的扩展。

function file_get_contents_ssl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000); // 3 sec.
curl_setopt($ch, CURLOPT_TIMEOUT, 10000); // 10 sec.
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
它的工作原理类似于功能 file_get_contents(..) .
例子:
echo file_get_contents_ssl("https://www.example.com/");
输出:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
那么你的代码应该这样工作:
//read XML
$url = 'https://api.competitionsuite.com/2013-02/Competitions/?o=C35091BF-0F25-4C86-A5AA-C7714E38112C';

$xml = file_get_contents_ssl($url);
$xml = simplexml_load_string($xml);

关于PHP file_get_contents() SSL 操作失败,代码为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66140670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com