Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony2中获取客户端Ip_Php_Symfony - Fatal编程技术网

Php 在Symfony2中获取客户端Ip

Php 在Symfony2中获取客户端Ip,php,symfony,Php,Symfony,我已经搜索过了,但似乎找不到这个简单问题的答案: 我如何强迫symfony给我用户ip的ipv4版本,或者我遗漏了什么 我可以同时获得ipv4和ipv6吗 谢谢 编辑:我的问题不同,因为我没有尝试获取任何ip,我知道函数getClientIP(这就是为什么它出现在标题中),我希望函数返回ip的ipv4和ipv6版本。(或任何函数,任何同时获取ipv4和ipv6的方法) 编辑2:这就是我现在获得ip的方式: public function getUserIp() { return $thi

我已经搜索过了,但似乎找不到这个简单问题的答案:

我如何强迫symfony给我用户ip的ipv4版本,或者我遗漏了什么

我可以同时获得ipv4和ipv6吗

谢谢

编辑:我的问题不同,因为我没有尝试获取任何ip,我知道函数getClientIP(这就是为什么它出现在标题中),我希望函数返回ip的ipv4和ipv6版本。(或任何函数,任何同时获取ipv4和ipv6的方法)

编辑2:这就是我现在获得ip的方式:

public function getUserIp()
{
    return $this->request->getClientIp();
}

它以独占方式返回ipv6。(此功能是从我自己的UserManager内部运行的,它在每次调用时检查并更新当前用户,方法是将事件插入控制器进入部分symfony管道)

如果用户连接到IPv6,则没有IPv4地址可显示,反之亦然。您总是只能获得一个版本的IP

您能告诉我们您尝试了什么吗?编辑的可能重复,请解释。但用户同时具有ipv6和ipv4,对吗?什么决定了用户与哪个ip连接?服务器?不,服务器知道的IP地址是客户端连接的IP地址。通常,套接字的端点位于一个IP地址的一个端口上,而另一端只知道这些。要从客户端获取两个IP地址,客户端必须显式地将其发送给您。您的解释很有道理,而且可能是真的,但我遇到过这样一种情况,不知何故,我让symfony获取ipv4而不是ipv6,显然,仅获取其中一个(正如您所说,不可能同时获取这两个地址),但我不知道是什么让symfony获得ipv4。有没有办法打开/关闭每个请求的ipv6支持?很抱歉,让您感到困惑,很显然,您是对的,问题实际上是由我老板的错误造成的,或者可能只是笨拙,谁知道,他在Cloudflare中打开了“仅ipv6”选项。。。我的错。