有三种解决办法:
- 第一种:修改php.ini配置文件
windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。(注意allow_url_fopen也必须开启)
linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。
- 第二种:stream_context_create方法
以下代码允许你使用file_get_contents获取https页面内容:
$url= 'https://blog.csdn.net/qq_41606390';
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$content = file_get_contents($url, false, stream_context_create($arrContextOptions));
- 第三种:使用curl函数替换file_get_contents
function getSslPage($url) {
/* https://blog.csdn.net/qq_41606390 */
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);// 跳过证书检查
curl_setopt($ch, CURLOPT_HEADER, false);//获取Header
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;
}