Laravel请求显示' :: 1'对于IP地址

时间:2016-03-29 20:06:34

标签: php laravel

我试图在Laravel中找到用户的IP地址。 request->ip()似乎会完成这项工作,但这只会返回::1。我也试过了$_SERVER['REMOTE_ADDR'],但也得到了同样的结果; $_SERVER为我返回以下内容:

array:24 [▼
  "DOCUMENT_ROOT" => "xxx"
  "REMOTE_ADDR" => "::1"
  "REMOTE_PORT" => "51995"
  "SERVER_SOFTWARE" => "PHP 5.5.32 Development Server"
  ...
]

REMOTE_ADDR总是::1。我尝试了3种不同的WiFi网络。我做错了吗?

编辑:在$_SERVER关联数组中,没有任何转发,因此我不会期望localhost。

修改

我知道这是我的本地机器。有没有办法在测试中存根,所以我可以对它进行断言(例如,它匹配某种格式)?

3 个答案:

答案 0 :(得分:5)

我假设您在提出请求的同一台服务器/计算机上运行您的网站。

IPv6中的{p> ::1127.0.0.1localhost(您当前的网卡地址)。

因此,如果您将网站放在远程服务器上,您将获得用户IP地址。

我猜您可以在配置文件中选择IPv4或IPv6显示。

答案 1 :(得分:0)

如果您的项目位于localhost上,则会上传到服务器。

答案 2 :(得分:0)

那可能是因为$ _SERVER ['REMODE_ADDR']仅在有一个远程地址(即有人从浏览器请求您的页面)时定义。使用cron时,脚本在本地执行,并且该设置可能为空。如果它破坏了代码,请尝试在脚本开始时自行设置:

if( !isset($_SERVER['REMODE_ADDR']) ) {
   $_SERVER['REMODE_ADDR'] = '127.0.0.1';
}

更多 Undefined REMOTE_ADDR when using Cron Jobs - Backpack for Laravel