Неопределенный индекс HTTP_HOST, даже если он проверен

Вот код:

if (isset($_SERVER['HTTP_HOST']) === TRUE) { $host = $_SERVER['HTTP_HOST']; } 

Как можно получить «неопределенный индекс HTTP_HOST» в строке внутри оператора if? Я имею в виду, что параметр индекса проверяется перед его использованием.

И почему HTTP_HOST иногда не может быть установлен?

Вы используете PHP-CLI?

HTTP_HOST работает в браузере.

HTTP_HOST всегда должен быть установлен, если вы работаете в браузере … тогда нет необходимости проверять … просто,

 $host = $_SERVER['HTTP_HOST']; 

достаточно

Обычно я опускал === TRUE , поскольку здесь это не требуется, потому что isset() возвращает логическое значение, но это не должно останавливать работу вашего кода.

Я бы также установил $ host разумным дефолтом (зависит от вашего приложения) перед оператором if. У меня есть общее правило не вводить новую переменную внутри условного, если она будет передана позже.

 $host = FALSE; // or $host = ''; etc. depending on how you'll use it later. if (isset($_SERVER['HTTP_HOST'])) { $host = $_SERVER['HTTP_HOST']; }