MAMP应该在localhost上返回:: 1作为IP吗?

时间:2010-09-13 10:13:55

标签: php sql-server localhost

我需要检索用户的IP。我的localhost将返回::1作为IP。我很好奇,如果这是预期的行为?我在Snow Leopard上运行MAMP。

5 个答案:

答案 0 :(得分:38)

同样的问题,并找到了有效的解决方案,经过测试,效果很好。我想拥有ip addy - 127.0.0.1,而不是必须接受:: 1并讨论整个IPv4 / 6问题。所以,我拖了一会儿,又陷入了@Brad 2008年的评论 - 这里: http://board.issociate.de/thread/489575/SERVERquotREMOTEADDRquot-returning-1.html

总结 - (在Mac OS上 - 特别是Mountain Lion)

sudo vi /etc/apache2/httpd.conf

找到你的apache在哪里'听'到ips / ports等... 通常这将是一个看起来像这样的行

Listen 80

让它看起来像这样:

Listen 127.0.0.1:80

重新保存。 重启Apache。 瞧!

现在$_SERVER[REMOTE_ADDR]看起来像127.0.0.1

希望它有所帮助。

答案 1 :(得分:31)

::1是IPv4 127.0.0.1地址的IPv6等价物。

您可以使用函数inet_ntop()将IPv6地址转换为IPv4地址,如Adam所说。

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

答案 2 :(得分:5)

修改/etc/apache2/httpd.conf甚至/private/etc/hosts不是解决方案。它返回:: 1,因为它是旧的(但是金色的)IPv4 127.0.0.1的IPv6等价物。正如它在/privates/etc/hosts中定义的那样,无论何时访问http://localhost,它都假设IPv6 :: 1。所以这是预期的行为。

解决方法是直接访问http://127.0.0.1。它会工作得很好。但请记住,IPv6可用性正在增加。您可以确保您的服务器(部署后)仅响应IPv4,但在中期,如果您的站点/ Web应用程序无法正确处理IPv4和IPv6,则很有可能在两年内出现问题。或者更早,我们永远不会知道。

答案 3 :(得分:2)

对于谁没有重新解决此问题,听起来hosts文件丢失或行

127.0.0.1       localhost   
<{1>} LINUX

中的

<{1>} MAC设备中的

etc\hosts WINDOWS xp / vista / 7/8 /

当文件/private/etc/hosts被移除或\%WINDIR%\system32\drivers\etc\hostshosts行也将由missed设置...

答案 4 :(得分:0)

当您需要IPv4格式时,必须在操作系统中禁用IPv6支持以使apache停止显示这些IPv6格式地址。我禁用了IPv6支持,并且它现在按预期工作。

我最近遇到过这个问题,虽然我不记得在我的Windows 7系统上启用ipv6支持,可以由微软在其中一个更新中完成(也许)。