用php获取主机名的最佳方法

mat*_*weg 51 php

我有一个PHP应用程序,安装在几个服务器和我们所有的开发人员笔记本电脑上.我需要一种快速可靠的方法来获取服务器的主机名或其他一些独特可靠的系统标识符.这是我们到目前为止所想到的:

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

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

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

你怎么看?

zom*_*bat 41

怎么样的gethostname()

编辑:根据您的环境,这可能不是我想的选项.它是PHP 5.3中的新功能. php_uname('n')可以作为替代方案.

  • `php_uname('n')`并不总是等于`$ _SERVER ['HOST_NAME']`运行脚本的机器可能会服务许多不同的主机名,因此在构建URL时不要使用它. (4认同)

ghb*_*att 36

对于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')); 
Run Code Online (Sandbox Code Playgroud)