Ответ 1
Как насчет gethostname()?
Изменить: Возможно, это не вариант, в зависимости от вашей среды. Это новое в PHP 5.3. php_uname ('n') может работать как альтернатива.
У меня есть приложение 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();