腳本在Apache下運行時,我將$_SERVER['SERVER_NAME']
值插入錯誤報告電子郵件。是否有PHP函數或變量給出本地主機名?
但是,如果一個Web腳本將nohup php ...
的「工作」作業分叉出來,那麼$_SERVER['SERVER_NAME']
看起來就是空的。因此,如果發生錯誤,則報告沒有主機名稱。
我可以可靠地通過PHP獲取主機名,而無需調用Unix hostname
命令?
腳本在Apache下運行時,我將$_SERVER['SERVER_NAME']
值插入錯誤報告電子郵件。是否有PHP函數或變量給出本地主機名?
但是,如果一個Web腳本將nohup php ...
的「工作」作業分叉出來,那麼$_SERVER['SERVER_NAME']
看起來就是空的。因此,如果發生錯誤,則報告沒有主機名稱。
我可以可靠地通過PHP獲取主機名,而無需調用Unix hostname
命令?
(PHP 4> = 4.0.2,PHP 5)
php_uname - 返回有關 操作系統PHP信息在php_uname運行()返回的描述操作系統PHP運行於 。這是您在phpinfo()輸出的頂部看到的相同字符串。對於操作系統的名稱,請考慮使用PHP_OS常量的 ,但請記住,此常量將包含PHP構建於其上的操作系統 。
在一些較早的UNIX平臺上,它可能無法確定當前的操作系統信息,在這種情況下,它將恢復爲顯示構建於其上的OS 。這隻會在您的uname()庫 調用不存在或不起作用時纔會發生。
您可以使用_GLOBALS['MACHINENAME']
直接從globals
array
獲取信息。
$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'));