当脚本在Apache下运行时,我会在报告电子邮件的错误中插入$_SERVER['SERVER_NAME']
值。
但是,如果Web脚本使用nohup php ...
分配“工作”作业,则$_SERVER['SERVER_NAME']
似乎为空。因此,如果发生错误,则报告没有主机名。
我可以通过PHP可靠地获取主机名,而无需调用Unix hostname
命令吗?
答案 0 :(得分:14)
(PHP 4> = 4.0.2,PHP 5)
php_uname - 返回有关的信息 操作系统PHP正在运行php_uname()返回PHP操作系统的描述 继续前进。这是你在最顶部看到的相同字符串 phpinfo()输出。仅作为操作系统的名称,请考虑 使用PHP_OS常量,但要记住这个常量将包含 操作系统PHP是基于。
在某些较旧的UNIX平台上,它可能无法确定 当前的操作系统信息,在这种情况下,它将恢复显示 OS PHP是建立在。只有你的uname()库才会发生这种情况 呼叫要么不存在要么不起作用。
答案 1 :(得分:1)
$hostname = gethostname();
PHP < 5.3.0 but >= 4.2.0 use this:
$hostname = php_uname('n');
对于PHP&lt; 4.2.0你可以试试其中之一:
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
答案 2 :(得分:0)
您可以使用_GLOBALS['MACHINENAME']
直接从globals
array
获取信息。