2017-10-22 13 views
0

내 사이트가 최근에 다운되어 호스팅 회사에서 복구를 도왔습니다. 그 후 내 페이지 중 하나에서이 오류가 계속 발생합니다.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

방법은 polyfill의 일종처럼 보인다. 이 방법을 제거하거나 function_exists 문으로 묶어야합니다.

옵션이없는 경우이 무서운 방법을 사용하는 것이 좋습니다. 나 혼자 사용하지 않았어. http://php.net/manual/en/function.runkit-function-remove.php

+0

어떻게이 오류를 방지하려면'function_exists'에서 위의 메서드를 래핑 할 수 있습니다. – codeNinja