Есть ли PHP-функция или переменная, дающая локальное имя хоста? - PullRequest
5 голосов
/ 17 октября 2008

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

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

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

Ответы [ 3 ]

14 голосов
/ 17 октября 2008

php_uname ( "п")

(PHP 4> = 4.0.2, PHP 5)
php_uname - возвращает информацию о операционная система PHP работает на

php_uname () возвращает описание операционной системы PHP работает на. Это та же самая строка, которую вы видите в самом верху вывод phpinfo (). Для названия только операционной системы, рассмотрим используя константу PHP_OS, но имейте в виду, что эта константа будет содержать операционная система PHP была построена.

На некоторых старых платформах UNIX, возможно, не удастся определить текущая информация об ОС, в этом случае он вернется к отображению ОС PHP была построена на. Это произойдет, только если ваша библиотека uname () вызов либо не существует, либо не работает.

1 голос
/ 18 июля 2013

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

$hostname = gethostname();

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

$hostname = php_uname('n');

Для PHP <4.2.0 вы можете попробовать один из них: </p>

$hostname = getenv('HOSTNAME'); 
$hostname = trim(`hostname`); 
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a')); 
0 голосов
/ 19 октября 2008

Вы можете использовать _GLOBALS['MACHINENAME'] для получения информации прямо из globals array.

...