PHP $ _SERVER пуст

Как-то $_SERVER['REMOTE_ADDR'] возвращает пустую строку, у меня такой же код (как часть скрипта), запущенный на нескольких серверах, и он работает повсюду, они все одинаковы.

Странно, когда я перезапускаю apache и загружаю страницу, он работает ровно один раз, если я перезагружаю сайт + все время после этого, он пуст. У меня были другие попытки, одинаковый результат, пустой.

кто-то предположил, что это что-то с конфигурацией IPv6, теперь я полностью отключил IPv6, но проблема не устранена.

Related of "PHP $ _SERVER пуст"

если вы за прокси-сервером, вы можете использовать $_SERVER['HTTP_X_FORWARDED_FOR'] или $_SERVER['HTTP_CLIENT_IP'] вместо $_SERVER['REMOTE_ADDR'] . это зависит от того, как настроен ваш прокси.

Да, REMOTE_ADDR может быть пустым. поэтому, если вы хотите, вы можете использовать этот код, который я использую для получения ip на основе HTTP_X_FORWARDED_FOR

 <?php if(! empty($_SERVER['REMOTE_ADDR']) ){ $ip = $_SERVER['REMOTE_ADDR']; } else{ $ip = empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : $_SERVER['HTTP_X_FORWARDED_FOR']; } 

Я сначала проверяю REMOTE_ADDR, поскольку он более надежный, а иногда HTTP_X_FORWARDED_FOR может быть подделан пользователями

У меня был код на новой виртуальной машине, которая выглядела так. Он вызывается из файла javascript:

 <?php $hostip = $_SERVER['REMOTE_ADDR']; ?> var myip = "<?=$hostip ?>"; 

Конечно, работал на старом сервере, и я некоторое время царапал себе голову, думая, что с Apache что-то не так. Там отсутствует модуль? Какой-то непонятный параметр Apache я не могу найти ?. Я думал, что Apache не отправляет серверные переменные. Это было до тех пор, пока я не попробовал простой способ, и это сработало:

 echo $_SERVER['REMOTE_ADDR']; 

Оказалось, что мне нужно было отредактировать php.ini и установить short_open_tag в On . Facepalm – ярлыки php ярлыков не работали. Надеюсь, это поможет спасти кого-то еще главу времени 🙂

Может быть, это поможет. Я вызывал php-скрипт из приложения iPhone для обновления базы данных, содержащей IP-адрес. IP-это новое поле, добавленное всего несколько дней назад, и оно не обновлялось с iPhone, но работало корректно с Android. Проблема в том, что новый скрипт php не использовался iPhone до тех пор, пока телефон не был выключен и не перезагружен. Он сохранил его в кеше.

Кто-нибудь знает, как очистить эти старые php-файлы?