PHP filter_input () переносит данные $ _SERVER на внешний хост, но работает на localhost

Я запускаю сервер apache2, где выполняю локальное тестирование (PHP 5.5), но мой хостинг-провайдер имеет PHP 5.3. Я не знаю, является ли это проблемой, но я упоминаю это на всякий случай.

Моя проблема заключается в следующем: я хочу отметить пару переменных $ _SERVER, но filter_input() по какой-то причине возвращает false, но только на моем хост-сервере. Он отлично работает на локальном хосте.

Echoing проверяет ожидаемый результат:

 echo $_SERVER['HTTP_USER_AGENT']; echo $_SERVER['REMOTE_ADDR']; 

Возвращает как ожидалось:

 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36 90.10.160.140 (Not the actual address) 

Но когда я использую фильтр (даже без фильтра / опций, заданных!), Оба они пусты:

 filter_input(INPUT_SERVER,'HTTP_USER_AGENT',FILTER_SANITIZE_ENCODED,FILTER_FLAG_STRIP_LOW); filter_input(INPUT_SERVER,'REMOTE_ADDR',FILTER_VALIDATE_IP); filter_input(INPUT_SERVER,'HTTP_USER_AGENT'); filter_input(INPUT_SERVER,'REMOTE_ADDR'); 

Все вышеперечисленное возвращает пустую строку / FALSE, когда выполняется на моем хостинг-провайдере, но работает как ожидается на моем локальном хосте.

Я предполагаю, что есть некоторый параметр конфигурации, установленный по-разному на хосте. Любая идея какая? Или что еще может быть? Благодарю.

Related of "PHP filter_input () переносит данные $ _SERVER на внешний хост, но работает на localhost"

У меня была та же проблема, я не смогу сказать вам, почему она возвращает пустую строку / FALSE, но для меня использование INPUT_ENV вместо INPUT_SERVER действительно работало и возвращает тот же IP-адрес, что и $_SERVER['REMOTE_ADDR'] . То же самое касается HTTP_USER_AGENT . Краткий пример:

 $REMOTE_ADDR = filter_input(INPUT_ENV, 'REMOTE_ADDR', FILTER_VALIDATE_IP); 

Мое предположение было бы связано с этой ошибкой: https://github.com/wp-stream/stream/issues/254

Попробуйте использовать исправление для кода в качестве обходного пути