Всегда ли установлен $ _SERVER ['SERVER_ADDR']? - PullRequest
4 голосов
/ 11 августа 2011

Всегда ли установлен $_SERVER['SERVER_ADDR']?

Должен ли я проверить с помощью isset () или это не нужно?

Мне нужно получить IP-адрес сайта, чтобы я мог узнать, если он127.0.0.1/localhost

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Это не всегда будет установлено.Учтите, что вы можете установить PHP, даже не имея сервера, и запустить его из командной строки.Нет никакой гарантии с какой-либо из переменных $_SERVER, но если вы попробуете один раз на своем сервере, и она сработает, вы можете поспорить, что она всегда будет установлена ​​на этой конфигурации сервера.Вам просто нужно где-то заметить, что если вы когда-либо вносите существенные изменения в конфигурацию вашего сервера или переключаете серверы, вы должны проверить это снова.

Вы также можете проверить значение переменных вашего сервера с помощью phpinfo()

3 голосов
/ 11 августа 2011

Нет, в CLI не установлено.Так что не всегда.

$ php -r "echo $_SERVER['SERVER_ADDR'];"

(без вывода)

Если вы зарегистрировали или сообщили об ошибках (на основе ваших настроек PHP.ini), вы также получите это сообщение:*

PHP Notice: Undefined index: SERVER_ADDR in Command line code on line 1
1 голос
/ 11 августа 2011
CLI

является хорошим примером того, когда он не установлен, но все значения _SERVER устанавливаются сервером, на котором работает php, поэтому в зависимости от используемого вами сервера и его конфигурации, нет никакой гарантии, что онбудет установлен в любом случае.

0 голосов
/ 04 мая 2015

Как уже было сказано через cli, он недоступен. На всякий случай, когда вам нужно узнать IP-адрес как через cli, так и через HTTP-вызов, подумайте о следующем:

$IP = isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:gethostbyname(gethostname());
...