Существует ли PHP-функция или переменная, задающая имя локального хоста?

StackOverflow https://stackoverflow.com/questions/211885

  •  03-07-2019
  •  | 
  •  

Вопрос

Когда скрипт запускается под управлением Apache, я вставляю $_SERVER['SERVER_NAME'] значение в сообщении электронной почты с сообщением об ошибке.

Однако, если веб-скрипт разветвляет "рабочее" задание с nohup php ..., $_SERVER['SERVER_NAME'] кажется, там пусто.Таким образом, если возникает ошибка, о ней сообщается без указания имени хоста.

Могу ли я надежно получить имя хоста с помощью PHP, не вызывая Unix hostname командовать?

Это было полезно?

Решение

php_uname (" n " )

  

(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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top