get_headers方法的http 500错误

时间:2017-10-22 22:23:43

标签: php http-status-code-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 个答案:

答案 0 :(得分: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