Существует ли PHP-функция или переменная, задающая имя локального хоста?
Вопрос
Когда скрипт запускается под управлением Apache, я вставляю $_SERVER['SERVER_NAME']
значение в сообщении электронной почты с сообщением об ошибке.
Однако, если веб-скрипт разветвляет "рабочее" задание с nohup php ...
, $_SERVER['SERVER_NAME']
кажется, там пусто.Таким образом, если возникает ошибка, о ней сообщается без указания имени хоста.
Могу ли я надежно получить имя хоста с помощью PHP, не вызывая Unix hostname
командовать?
Решение
(PHP 4 > = 4.0.2, PHP 5)
php_uname & # 8212; Возвращает информацию о операционная система PHP работает наphp_uname () возвращает описание операционной системы PHP работает на. Это та же самая строка, которую вы видите в самом верху вывод phpinfo (). Для названия только операционной системы, рассмотрим используя константу PHP_OS, но имейте в виду, что эта константа будет содержать операционная система PHP была построена на.
На некоторых старых платформах UNIX, возможно, не удастся определить текущая информация об ОС, в этом случае он вернется к отображению ОС PHP была построена на. Это произойдет, только если ваша библиотека uname () вызов либо не существует, либо не работает.
Другие советы
Для PHP>= 5.3.0 используйте это:
$hostname = gethostname();
Для PHP < 5.3.0, но >= 4.2.0 используйте это:
$hostname = php_uname('n');
Для PHP < 4.2.0 вы можете попробовать один из этих способов:
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
Вы можете использовать _GLOBALS['MACHINENAME']
для получения информации прямо из globals
array
.