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

In: apache|php

6 3月 2014

$_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;
?>

以上、解決です。

コメント

Comment Form

About this blog

ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。

カテゴリー

カテゴリー

アーカイブ