質問
Apacheでスクリプトを実行するとき、エラー報告の電子メールメッセージに$_SERVER['SERVER_NAME']
値を挿入します。
ただし、Webスクリプトが<!> quot; worker <!> quot;を分岐する場合、 nohup php ...
のジョブ、hostname
はそこで空のように見えます。したがって、エラーが発生した場合、ホスト名なしで報告されます。
Unix <=>コマンドを呼び出さずに、PHPを使用してホスト名を確実に取得できますか?
解決
php_uname(<!> quot; n <!> quot; )
(PHP 4 <!> gt; = 4.0.2、PHP 5)
php_uname <!>#8212;についての情報を返します PHPが実行されているオペレーティングシステムphp_uname()は、PHPのオペレーティングシステムの説明を返します で実行しています。これは、最上部に表示される文字列と同じです phpinfo()の出力。オペレーティングシステムだけの名前については、 PHP_OS定数を使用しますが、この定数には オペレーティングシステムPHPが構築されました。
一部の古いUNIXプラットフォームでは、特定できない場合があります 現在のOS情報。その場合、表示に戻ります。 OS PHPはその上に構築されました。これはuname()ライブラリの場合にのみ発生します 呼び出しが存在しないか、機能しません。
他のヒント
$hostname = gethostname();
PHP <!> lt; 5.3.0が<!> gt; = 4.2.0はこれを使用:
$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'));
_GLOBALS['MACHINENAME']
を使用して、globals
array
から直接情報を取得できます。