phpで”REMOTE_HOST”が取得できない場合の解決法

$_SERVERで取得できる環境変数に、リモートホスト情報があります。
ところが、これが取得できない場合があります。

echo 'IPは'.$_SERVER['REMOTE_ADDR'].'<br />';
echo 'リモートホストは'. $_SERVER['REMOTE_HOST'];

とやっても、出力がこのようになってしまう……。

IPは123.456.789
リモートホストは

httpd.confを確認しよう

これは、Webサーバーの方でリモートホスト出力をOffにしてあるからです。

Apacheの場合、httpd.confを見てみましょう。

HostnameLookups Off

こんな一節がありますので、

HostnameLookups On

にすればめでたく取得できます。

レンタルサーバーなどでhttpd.confが編集できない場合

でもそもそもhttpd.confがいじれない場合は困りますね。
そんな時は代替手段として関数が用意されていますので、これを使います。

gethostbyaddr

この関数に、引数でIPアドレスを渡すと、ホスト名を調べてくれます。

<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname;
?>

広告

以上、解決です。

About: 櫻木

在野のコラムニスト。1975年生まれ。大東亜戦争の戦地の取材をライフワークとしており、台湾やインドネシアとの親交が深い。


Leave a Reply

Your email address will not be published. Required fields are marked *