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; ?> |
以上、解決です。