スクリプトが Apache で実行されるとき$_SERVER['SERVER_NAME']
、エラー報告の電子メール メッセージに値を挿入します。
ただし、Web スクリプトが で「worker」ジョブを fork すると、そこでは空nohup php ...
に$_SERVER['SERVER_NAME']
見えます。したがって、エラーが発生した場合、ホスト名なしで報告されます。
Unixhostname
コマンドを呼び出さずに、PHP を使用してホスト名を確実に取得できますか?
(PHP 4 >= 4.0.2、PHP 5)
php_uname — PHP が実行されているオペレーティング システムに関する情報を返すphp_uname() は、PHP が実行されているオペレーティング システムの説明を返します。これは、phpinfo() 出力の一番上に表示される文字列と同じです。オペレーティング システムのみの名前については、PHP_OS 定数の使用を検討してください。ただし、この定数には、PHP が構築されたオペレーティング システムが含まれることに注意してください。
一部の古い UNIX プラットフォームでは、現在の OS 情報を判別できない場合があります。その場合、PHP が構築された OS の表示に戻ります。これは、uname() ライブラリ呼び出しが存在しないか機能しない場合にのみ発生します。
$hostname = gethostname();
PHP < 5.3.0 で >= 4.2.0 の場合は、次を使用します。
$hostname = php_uname('n');
PHP < 4.2.0 の場合、次のいずれかを試すことができます。
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
を使用_GLOBALS['MACHINENAME']
して、 から直接情報を取得できますglobals
array
。