2017-10-22 23 views
0

最近、私のサイトがダウンし、ホスティング会社が回復しました。その後、私は自分のページの1つでこのエラーが発生し続ける。get_headersメソッドでhttp 500エラー

[22-Oct-2017 02:54:03 UTC] PHP Fatal error: Cannot redeclare get_headers() in C:\inetpub\vhosts\mysite.com\httpdocs\html\blue\inc\ip_redirect.php on line 92 

コードが参照している方法は次のとおりです。私はチェックしたが、これが原因でHTTP 500エラーが発生する。

function get_headers($url,$format=0) 
{ 
    $url=parse_url($url); 
    $end = "\r\n\r\n"; 
    $fp = fsockopen($url['host'], (empty($url['port'])?80:$url['port']), $errno, $errstr, 30); 
    if ($fp) 
    { 
     $out = "GET/HTTP/1.1\r\n"; 
     $out .= "Host: ".$url['host']."\r\n"; 
     $out .= "Connection: Close\r\n\r\n"; 
     $var = ''; 
     fwrite($fp, $out); 
     stream_set_timeout($fp, 5); 

     while (!feof($fp)) 
     { 
      $var.=fgets($fp, 1280); 
      $info = stream_get_meta_data($fp); 

      if ($info['timed_out']) { 
       echo 'Connection timed out!'; 
       return ""; 
      } 

      if(strpos($var,$end)) 
      break; 
     } 
     fclose($fp); 
     $var=preg_replace("/\r\n\r\n.*\$/",'',$var); 
     $var=explode("\r\n",$var); 
     if($format) 
     { 
      foreach($var as $i) 
      { 
       if(preg_match('/^([a-zA-Z -]+): +(.*)$/',$i,$parts)) 
       $v[$parts[1]]=$parts[2]; 
      } 
      return $v; 
     } 
     else 
      return $var; 
    } 
} 
+1

フレームワークを使用していますか? 'function get_headers'のすべてのファイルを検索し、すでに定義されているかどうかを確認してください。 –

+0

または、この関数を複数定義しているファイルが含まれていないことを確認してください。関数を宣言するすべてのファイルにinclude_once()を使用する必要があります。 – Devon

答えて

1

方法get_headersは、PHPの内部機能です。

http://php.net/manual/en/function.get-headers.php

方法はポリフィルのいくつかの並べ替えのように見えます。このメソッドを削除するか、function_existsステートメントでラップしてください。

オプションがない場合は、この恐ろしい方法に手を伸ばしてください。自分で使ったことはありません。 http://php.net/manual/en/function.runkit-function-remove.php

+0

このエラーを防ぐために、 'function_exists'に上記のメソッドをどのようにラップすることができますか? – codeNinja