Почему всё же $_SERVER['REMOTE_ADDR'] отдает 127.0.0.1 на локали и как это побороть?
Я так понимаю эта проблема многих коснулась, потому что я гуглил стек и на английском, и на русском, и не нашел однозначного ответа, может тут есть у кого
В общем, если я смотрю когда сайт запущен на VPS, хостинге, то там через $_SERVER['REMOTE_ADDR'] отдаётся нормальный IP-адрес. Если же я смотрю на локали, то постоянно 127.0.0.1. У меня сейчас проект, где нужно знать IP еще на этапе разработки, чтобы знать как сайт себя вёл в нужной ситуации. Как сделать так, чтобы возвращался реальный IP?
P.S. через вардамп вывел $_SERVER, там нигде и близко нет моего родного айпишника =(
Вы, видимо, будете крайне удивлены, но - с чего вы решили, что у хоста вообще может быть только один IP?
Хоть несколько сотен адресов на каждом сетевом интерфейсе.
И чем вам не нравится 127.0.0.1? 127.0.0.1 - отличный адрес. Он есть чуть менее чем у каждого хоста. Помимо него у каждого же хоста может быть любое число других сетевых адресов. В том числе из более чем обширной сети 127.0.0.0/8 - вся эта орава является локальными адресами.
И это только для ipv4, и даже без учёта трансляции адресов. Для ipv6 by design существует множество адресов на всех интерфейсах.
Что есть "реальный" IP?
Адрес хоста, с которого открыт сокет? Это REMOTE_ADDR.
Для 127/8 как раз местоположение определяется элементарно - это _здесь_.
Адреса интерфейсов на хосте? Ну и где я с моими 127.0.0.0/8, 192.168.5.10/24, 192.168.15.2/24 нахожусь, по-вашему?