2008-10-17 47 views
5

脚本在Apache下运行时,我将$_SERVER['SERVER_NAME']值插入错误报告电子邮件。是否有PHP函数或变量给出本地主机名?

但是,如果一个Web脚本将nohup php ...的“工作”作业分叉出来,那么$_SERVER['SERVER_NAME']看起来就是空的。因此,如果发生错误,则报告没有主机名称。

我可以可靠地通过PHP获取主机名,而无需调用Unix hostname命令?

回答

14

php_uname("n")

(PHP 4> = 4.0.2,PHP 5)
php_uname - 返回有关 操作系统PHP信息在

php_uname运行()返回的描述操作系统PHP运行于 。这是您在phpinfo()输出的顶部看到的相同字符串。对于操作系统的名称,请考虑使用PHP_OS常量的 ,但请记住,此常量将包含PHP构建于其上的操作系统 。

在一些较早的UNIX平台上,它可能无法确定当前的操作系统信息,在这种情况下,它将恢复为显示构建于其上的OS 。这只会在您的uname()库 调用不存在或不起作用时才会发生。

0

您可以使用_GLOBALS['MACHINENAME']直接从globalsarray获取信息。

1

对于PHP >= 5.3.0 use this

$hostname = gethostname();

PHP < 5.3.0 but >= 4.2.0 use this

$hostname = php_uname('n');

对于PHP 4.2.0 <你可以尝试下列操作之一:

$hostname = getenv('HOSTNAME'); 
$hostname = trim(`hostname`); 
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a')); 
相关问题