如果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地址。

http://php.net/manual/en/function.inet-ntop.php

修改/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在他们的更新(也许)之一完成。