remote_addr не возвращает адрес IPv4

Я использую 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 в одном из своих обновлений (возможно).