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

Mil*_*uzz 33 php sql-server localhost

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

Bil*_*ell 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.

希望它可以帮助某人.

  • 这样就可以禁用Apache的IPv6支持.您可以通过另一种方式修复它:将``127.0.0.1 localhost``添加到hosts文件,因此IPv4解析优先于IPv6进行localhost;) (3认同)

Tom*_*zyk 31

::1是IPv6等价的IPv4 127.0.0.1地址.

您可以使用inet_ntop()作为Adam的功能将IPv6地址转换为IPv4地址.

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


Isa*_*res 5

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

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