file_get_content不适用于php

时间:2019-06-13 08:12:18

标签: php file-get-contents tls1.2

有人对https上的网站显示内容有疑问吗?该代码一直有效,直到服务器上的所有站点都获得ssl。也许是这样的证书是TLS 1.2?因此,尝试从中执行此操作的站点现在已获得此证书。

$data = file_get_contents('https://www.ladygaga.com/'); 
echo $data;

2 个答案:

答案 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://套接字,开发人员负责检测   并禁止显示此警告。

Source link