PHP$服务器[';远程地址';]不再按预期为用户提供ipaddress?

PHP$服务器[';远程地址';]不再按预期为用户提供ipaddress?,php,Php,在PHP 5.4之前,当使用$\u SERVER['REMOTE\u ADDR']运行检索用户IPAddress时,结果将是用户的外部IPV6 IPAddress。 例:60.123.456.168 但是,由于将我的服务器更新为PHP 5.4,返回的用户IP地址似乎是他们的内部IP: 例:192.168.1.34 如果您希望特定的办公室或“路由器”查看特定的内容组,或者在我们的示例中是调试代码,那么这将成为一个问题。 我尝试使用另一个IP选项$\u SERVER['HTTP\u X\u FORW

在PHP 5.4之前,当使用
$\u SERVER['REMOTE\u ADDR']
运行检索用户IPAddress时,结果将是用户的外部IPV6 IPAddress。 例:60.123.456.168

但是,由于将我的服务器更新为PHP 5.4,返回的用户IP地址似乎是他们的内部IP: 例:192.168.1.34

如果您希望特定的办公室或“路由器”查看特定的内容组,或者在我们的示例中是调试代码,那么这将成为一个问题。 我尝试使用另一个IP选项
$\u SERVER['HTTP\u X\u FORWARDED\u']
,但这在所有服务器上都不可用


在PHP>=5.4中,他们是获取用户外部ip地址的另一种方法,还是已经删除了此功能?

这甚至可以检查代理服务器并仍然显示正确的用户ip

<?php
function get_real_ip()
{

    if (isset($_SERVER["HTTP_CLIENT_IP"]))
    {
        return $_SERVER["HTTP_CLIENT_IP"];
    }
    elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
    {
        return $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
    elseif (isset($_SERVER["HTTP_X_FORWARDED"]))
    {
        return $_SERVER["HTTP_X_FORWARDED"];
    }
    elseif (isset($_SERVER["HTTP_FORWARDED_FOR"]))
    {
        return $_SERVER["HTTP_FORWARDED_FOR"];
    }
    elseif (isset($_SERVER["HTTP_FORWARDED"]))
    {
        return $_SERVER["HTTP_FORWARDED"];
    }
    else
    {
        return $_SERVER["REMOTE_ADDR"];
    }

}
$IP_Address = get_real_ip();

echo $IP_Address
?>

这不是PHP的错。PHP除了读取环境变量外,什么都检测不到。
您可能有一些未正确配置的代理

好的

发现这个问题似乎是由于我们的新服务器设置。 因为服务器实际上是从本地主机运行的,并通过Windows联网(到目前为止我还不知道)。 这就解释了为什么会出现本地IP地址

假警报:)


谢谢大家的帮助

print\r($\u服务器),它在那里吗?你在本地主机上运行脚本吗?附言。是的,我在Stack Exchange和Google中搜索了这个,然后问:)不,luckIm在实时服务器上运行脚本,不,外部IP在$server global中找不到她启动了没有包含正确IP的服务器变量,因此这无助于你的常识,与其口口声声说它不起作用,不如把php上传到服务器上,看看结果如何?我甚至在运行CyberGhost 5时进行了测试