有人对https上的网站显示内容有疑问吗?该代码一直有效,直到服务器上的所有站点都获得ssl。也许是这样的证书是TLS 1.2?因此,尝试从中执行此操作的站点现在已获得此证书。
$data = file_get_contents('https://www.ladygaga.com/');
echo $data;
答案 0 :(得分:0)
Based on OpenSSL changes in PHP 5.6,请尝试以下操作:
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$response = file_get_contents("https://www.ladygaga.com/", false, stream_context_create($arrContextOptions));
echo $response;
另一种选择是像这样使用curl:
function file_get_contents_curl( $url ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_AUTOREFERER, TRUE );
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, TRUE );
$data = curl_exec( $ch );
curl_close( $ch );
return $data;
}
$data = file_get_contents_curl("https://www.ladygaga.com");
答案 1 :(得分:0)
根据php.net
使用SSL时,Microsoft IIS将通过关闭SSL违反协议 连接,而不发送close_notify指示器。 PHP将报告 当您到达末尾时,将其显示为“ SSL:致命协议错误” 数据。要变通解决此问题,error_reporting的值应为 降低到不包含警告的水平。 PHP可以检测 当您使用https://打开流时,有问题的IIS服务器软件 包装器,并将取消警告。使用fsockopen()时 创建一个ssl://套接字,开发人员负责检测 并禁止显示此警告。