致命错误:无法重新声明anp_realip()(之前在E_COMPILE_ERROR文件中声明错误)

时间:2014-09-28 00:50:59

标签: php

为什么会出现这个错误? 错误是 致命错误:无法重新声明第219行cr.php中的anp_realip()(之前在cr.php:196中声明)E_COMPILE_ERROR文件�cr.php�第219行出错:无法重新声明anp_realip()(之前在cr.php中声明) :196)

第196行是$ ip = FALSE; 第219行是函数的结尾}(最后一个)。

function anp_realip()
{
    // No IP found (will be overwritten by for
    // if any IP is found behind a firewall)
    $ip = FALSE;

    // User is behind a proxy and check that we discard RFC1918 IP addresses
    // if they are behind a proxy then only figure out which IP belongs to the
    // user.  Might not need any more hackin if there is a squid reverse proxy
    // infront of apache.
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

        // Put the IP's into an array which we shall work with shortly.
        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);

        for ($i = 0; $i < count($ips); $i++) {
            // Skip RFC 1918 IP's 10.0.0.0/8, 172.16.0.0/12 and
            // 192.168.0.0/16 
            // below.
            if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
                $ip = $ips[$i];
                break;
            }
        }
    }
    // Return with the found IP or the remote address
    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}

好的,所以将debug设置为2我在计算机上得到这个:

用户不在例外列表中 没有为当前访问者保存国家/地区代码(_DEBUG_MODE = 1可防止发送cookie); cookie名称:anp_810c087185 该访客的国家代码是从COOKIE / SESSION加载的:&#39;无&#39; 从文字中获取国家:&#39; IT&#39; 查找国家/地区的网址&#39; IT&#39; 致命错误:无法重新声明第219行cr.php中的anp_realip()(之前在cr.php:196中声明)E_COMPILE_ERROR文件�cr.php�第219行出错:无法重新声明anp_realip()(之前在cr.php中声明) :196)

我的一位朋友在另一台电脑上得到了这个:

用户不在例外列表中 没有为当前访问者保存国家/地区代码(_DEBUG_MODE = 1可防止发送cookie); cookie名称:anp_810c087185 该访客的国家代码是从COOKIE / SESSION加载的:&#39;无&#39; 从文字中获取国家:&#39; NL&#39; 查找国家&地区的网址&#39; NL&#39; 访问者现在应该重定向到http://www.test.com

那怎么样,为什么这对我不起作用但对他有用呢?试图清除浏览器捕获,没有运气。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

当您requireinclude同一文件两次时,有时会发生这种情况。切换到require_once和/或include_once(如果尚未要求/包含文件,则只需要/包含文件)。

你可能正在加载这个文件两次,并且在第二次加载时,PHP会抱怨已经定义了这个函数。