如果MAMP返回:: 1作为本地主机上的IP?
我需要检索用户的IP。 我的本地主机返回::1
作为IP。 我很好奇,如果这是一个预期的行为? 我在Snow Leopard上运行MAMP。
同样的问题,并find一个有效的解决scheme,testing,运作良好。 我希望拥有127.0.0.1的ip addy,而不必接受:: 1并且讨论整个IPv4 / 6的问题。 所以,我拖了一会儿,落到了@Brad发表的2008年评论 – 这里: http ://board.issociate.de/thread/489575/SERVERquotREMOTEADDRquot-returning-1.html
总结 – (在Mac OS上 – 特别是山狮)
sudo vi /etc/apache2/httpd.conf
find你的apache是在监听ips / ports等等。通常这将是一个看起来像这样的线
Listen 80
使它看起来像这样:
Listen 127.0.0.1:80
重新保存它。 重新启动Apache。 瞧!
现在$_SERVER[REMOTE_ADDR]
看起来像这个127.0.0.1
。
希望它可以帮助别人。
::1
是IPv4 127.0.0.1
地址的IPv6等效项。
亚当说,你可以使用函数inet_ntop()
将IPv6地址转换为IPv4地址。
修改/etc/apache2/httpd.conf
甚至/private/etc/hosts
不是解决scheme。 它返回:: 1,因为它是与旧的(但黄金)IPv4 127.0.0.1
相当的IPv6。 因为它在/privates/etc/hosts
定义,所以无论何时访问http://localhost
它都会假定IPv6 :: 1。 所以这是预期的行为。
解决方法是直接访问http://127.0.0.1
。 它会工作得很好。 但请记住,IPv6的可用性正在增加。 您可以确保您的服务器(部署后)只会对IPv4做出响应,但在中期,如果您的站点/ Web应用程序不能正确处理IPv4和IPv6,那么很可能在1/2年内出现问题。 或者更早,我们永远不知道。
谁没有reslove这个问题,这听起来是hosts
文件丢失或行
127.0.0.1 localhost
在etc\hosts
LINUX中
in /private/etc/hosts
MAC设备
在\%WINDIR%\system32\drivers\etc\hosts
WINDOWS xp / vista / 7/8 /
当文件hosts
被删除或missed
或者IPV6
将被default
设置为…
当你需要IPv4格式时,你必须在你的操作系统中禁用IPv6支持,以便apache停止显示这些IPv6格式地址。 我现在禁用了IPv6支持并按预期工作。
我最近遇到了这个问题,虽然我从未记得在我的Windows 7系统上启用ipv6支持,可以由Microsoft在他们的更新(也许)之一完成。