Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP CURL获取https页面的内容_Php_Curl_Https - Fatal编程技术网

PHP CURL获取https页面的内容

PHP CURL获取https页面的内容,php,curl,https,Php,Curl,Https,示例url: 我正在尝试使用cURL获取HTTPS页面的内容 问题是我拿不到文件,也不知道为什么 function download_page($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5

示例url:

我正在尝试使用cURL获取HTTPS页面的内容

问题是我拿不到文件,也不知道为什么

    function download_page($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");

    return curl_exec($ch);
}

您可能遇到的问题与您遇到的问题相同。而且,他似乎已经修好了。问题可能是关于SSL证书的协商,以及cURL应该如何判断服务器发送的证书是否可信。

您提供的代码实际上对我很好,无需修改。正如RolfVandeKrol提到的,您可能会遇到SSL协商问题。要尝试使用该想法进行修复,您可以通过以下方式关闭SSL对等验证:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
要查看实际情况,在修改之前,可以使用
curl\u getinfo($ch)
查看返回的所有标题。这应该让您知道脚本接收到的正确诊断响应类型

此外,您可能需要修改函数以使用
curl\u close($ch)正确关闭
curl
句柄。尝试,而不是
返回curl\u exec($ch),使用:

    ...
    $contents = curl_exec($ch);
    curl_close($ch);
    return $contents;
}
检查错误:

$result = curl_exec($ch);
if (!$result) {
   die(curl_error($ch));
}
最有可能的情况是,curl不再附带“有效”CA的内部列表,因此无法验证远程站点的证书是否有效。您必须禁用证书验证,和/或自己安装CA列表

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
p、 永远不要假设远程资源上的操作成功-始终检查错误条件,并输出任何可用的错误消息。开着灯,而不是在黑暗中四处乱跑,你会省去很多头疼的事