Я использую xampp на localhost, и когда я использую $_SERVER["REMOTE_ADDR"]
он возвращает ::1
(также делает это в phpinfo()
). Почему он это делает? Я хочу, чтобы он возвращал обычный ip-адрес, например 127.0.0.1. Моя операционная система – Windows Vista.
::1
– это адрес IPv6 и аббревиатура для 0:0:0:0:0:0:0:1
который является адресом обратной связи на локальном компьютере. Итак ::1
– это то же самое, что и 127.0.0.1
только через IPv6 вместо IPv4.
Ваш apache прослушивает подключения по протоколу IPv6 по умолчанию ( ::1
является локальной петлей ). Если вы действительно хотите IPv4, попробуйте отключить отключение соединений IPv6 в вашей конфигурации apache:
Если вы хотите, чтобы Apache обрабатывал только соединения IPv4, независимо от того, что поддерживает ваша платформа и APR, укажите IPv4-адрес во всех директивах Listen, как в следующих примерах:
Listen 0.0.0.0:80 Listen 192.170.2.1:80
Перейдите на панель управления XAMPP. Откройте Apache (httpd.conf), который можно найти в первой строке, т.е. Действия модуля Apache. Перейдите к прослушиванию (вы можете Ctrl + F это), который показывает 80 (если у вас активен ipv6) измените его на Listen 0.0.0.0:80
и все готово. Перезапустите Apache, и вы больше не увидите ::1
в своем браузере. Это с радостью вернет ваш localhost, то есть 127.0.0.1
Вы должны отключить поддержку IPv6 в своей ОС для apache, чтобы прекратить показывать эти адреса формата IPv6, если вам нужен формат IPv4. Я отключил поддержку IPv6 и теперь работает как ожидалось.
Следующие инструкции по отключению IPv6 могут быть полезны, http://support.microsoft.com/kb/929852
Просто, чтобы вы знали, что я выполнил шаги, описанные в приведенной выше ссылке, и я использую Windows 7, а не Vista, хотя я сомневаюсь, что могут быть какие-либо различия.
Недавно я столкнулся с этой проблемой, хотя я никогда не помню, чтобы включить поддержку ipv6 в моей системе, может быть сделано Microsoft в одном из своих обновлений (возможно).