PHP 函数file_get_contents 抓取网页遇到https失败解决方案

在使用函数file_get_contents 抓取网页遇到网址为 https 链接时,报错失败的解决方案,另提供两种替代方案:

一、修改php.ini配置文件,把extension=php_openssl.dll前面的;删掉(php7.0后为extension=openssl), 然后重启服务。(注意allow_url_fopen也必须开启)

如果上述方法无效时可以尝试下列替代方案:

第一、stream_context_create方法,以下代码允许你使用file_get_contents获取https页面内容:

$url= 'https://www.zhuei.cn';
$arrContextOptions=array(
      "ssl"=>array(
            "verify_peer"=>false,
            "verify_peer_name"=>false,
        ),
    );  
$response = file_get_contents($url, false, stream_context_create($arrContextOptions));
echo $response;

第二、使用curl函数替换file_get_contents,具体实现代码如下:

function getSslPage($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);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
$url= 'https://www.zhuei.cn';
echo getSslPage($url);

这样就可以采集https网页了,快去试试吧!

如果你发现错误或有其他方法,请给 www.zhuei.cn 留言,我们会尽快更新本文!