我试图在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。
我知道这是我的本地机器。有没有办法在测试中存根,所以我可以对它进行断言(例如,它匹配某种格式)?
答案 0 :(得分:5)
我假设您在提出请求的同一台服务器/计算机上运行您的网站。
IPv6中的{p>::1
为127.0.0.1
或localhost
(您当前的网卡地址)。
因此,如果您将网站放在远程服务器上,您将获得用户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