Мне нужно получить IP-адрес пользователя. Мой localhost возвращает ::1
как IP. Мне любопытно, если это ожидаемое поведение? Я запускаю MAMP на Snow Leopard.
Должен ли MAMP возвращать:: 1 как IP на localhost?
Ответ 1
Тот же вопрос, и нашел действительное решение, проверенное, работает хорошо. Я хотел иметь ip addy - от 127.0.0.1, а не вместо того, чтобы принимать:: 1 и обсуждать все проблемы IPv4/6. Итак, я несколько минут пробовал и упал на комментарий 2008 года, сделанный @Brad - здесь: 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
.
Надеюсь, что это поможет кому-то.
Ответ 2
::1
является эквивалентом IPv6 адреса IPv4 127.0.0.1
.
Вы можете преобразовать адрес IPv6 в адрес IPv4, используя функцию inet_ntop()
как Адам, сказал.
Ответ 3
Изменение /etc/apache2/httpd.conf
или даже /private/etc/hosts
не является решением. Он возвращает:: 1, потому что IPv6 эквивалентен старому (но золотому) IPv4 127.0.0.1
. Как он определен в /privates/etc/hosts
, всякий раз, когда вы обращаетесь к http://localhost
, он принимает IPv6:: 1. Итак, это ожидаемое поведение.
Обходным путем было бы обращение к http://127.0.0.1
напрямую. Все будет хорошо. Но помните, что доступность IPv6 растет. Вы можете убедиться, что ваш сервер (после развертывания) будет реагировать только на IPv4, но в среднесрочной перспективе, если ваш сайт/веб-приложение не будет правильно обрабатывать как IPv4, так и IPv6, есть большая вероятность, что что-то пойдет не так в течение 1/2 лет. Или раньше мы никогда не узнаем.
Ответ 4
для тех, кто не решает эту проблему, кажется, что отсутствует файл hosts
или строка
127.0.0.1 localhost
в etc\hosts
LINUX
в /private/etc/hosts
устройствах MAC
in \%WINDIR%\system32\drivers\etc\hosts
WINDOWS xp/vista/7/8/
когда удаляется файл hosts
или missed
или строка также IPV6
будет установлена default
...
Ответ 5
Вы должны отключить поддержку IPv6 в своей ОС для apache, чтобы прекратить показывать эти адреса формата IPv6, если вы хотите формат IPv4. Я отключил поддержку IPv6 и теперь работает как ожидалось.
Недавно я столкнулся с этой проблемой, хотя я никогда не помню, чтобы включить поддержку ipv6 в моей системе Windows 7, может быть сделано Microsoft в одном из своих обновлений (возможно).