2008-10-17 61 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'));