在使用函数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 留言,我们会尽快更新本文!