Лучший способ получить имя хоста с php

У меня есть приложение php, которое установлено на нескольких серверах и на всех наших ноутбуках разработчиков. Мне нужен быстрый и надежный способ получить имя хоста сервера или другой уникальный и надежный системный идентификатор. Вот что мы думали до сих пор:

<? $hostname = (!empty($_ENV["HOSTNAME"])) ? $_ENV["HOSTNAME"] : env('HOSTNAME'); ?>

<? $hostname = gethostbyaddr($_SERVER['SERVER_ADDR']); ?>

<? $hostname = exec('hostname'); ?>

Как вы думаете?

Что относительно gethostname () ?

Редактировать: Это может быть не вариант, я полагаю, в зависимости от вашей среды. Это новое в PHP 5.3. php_uname ('n') может работать как альтернатива.

Для PHP> = 5.3.0 используйте это :

$hostname = gethostname();

Для PHP <5.3.0, но> = 4.2.0 используйте это :

$hostname = php_uname('n');

Для PHP <4.2.0 используйте это:

 $hostname = getenv('HOSTNAME'); if(!$hostname) $hostname = trim(`hostname`); if(!$hostname) $hostname = exec('echo $HOSTNAME'); if(!$hostname) $hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a')); 

Вы также можете использовать …

 $hostname = getenv('HTTP_HOST'); 

Принятый ответ gethostname () может привести к неточности, если вы неточно оцените, как в моем случае

 gethostname() = my-bacbook-pro (incorrect) $_SERVER['host_name'] = mysite.git (correct) 

Значение из gethostname () является ошибочным. Будьте осторожны с этим.

Обновить как исправлено в комментарии

Имя хоста дает вам имя компьютера, а не имя веб-сайта, мое плохое. Мой результат на локальной машине

 gethostname() = my-bacbook-pro (which is my machine name) $_SERVER['host_name'] = mysite.git (which is my website name) 

php_uname, но я не уверен, какое имя хоста вы хотите имя хоста клиента или сервера.

плюс вы должны использовать подход на основе файлов cookie

Я запускаю PHP версии 5.4 на общем хостинге, и оба они оба возвращают те же результаты:

 php_uname('n'); gethostname();