PHPでREMOTE_HOSTを取得するために必要なApacheの設定

このページでは、PHPでリモートホスト情報($_SERVER[‘REMOTE_HOST’])を取得する方法(必要となるApacheの設定)を解説します。

もくじ

  • リモートホスト情報($_SERVER[‘REMOTE_HOST’])とは
  • Apacheの設定ファイル(httpd.conf)をいじれる場合の対処法
  • 設定ファイルをいじれない場合の対処法

リモートホスト情報($_SERVER[‘REMOTE_HOST’])とは

「リモートホスト」の本来の意味は、ネットワークを介して接続した先の機器です(対義語はローカルホスト)。しかし、サーバーに接続してくるクライアントのホスト名のことをリモートホスト(さらに略すと「リモホ」)と呼ぶ場合もあり、本ページで登場する「リモートホスト」もこちらの用法です。

さて、PHPで使用できるスーパーグローバル変数の一つに「$_SERVER」というものがあります。その中には、接続してきたユーザーの情報(IPアドレスなど)もセットされており、リモートホストの情報は$_SERVER[‘REMOTE_HOST’]から取得できるようになっています(IPアドレスは$_SERVER[‘REMOTE_ADDR’]から取得できます)。

Apacheの設定ファイル(httpd.conf)をいじれる場合の対処法

リモートホスト情報($_SERVER[‘REMOTE_HOST’])を取得できない原因としては、Apacheの設定が考えられます。Apache2.4では、デフォルトではHostnameLookupsがOffとなっており、DNSの逆引きが行われません。そのため、$_SERVER[‘REMOTE_HOST’]を取得しようとしても、変数の中身は空っぽなのです。

httpd.confを編集できるのであれば、HostnameLookupsを有効化すれば$_SERVER[‘REMOTE_HOST’]の値を取得できるようになります。 [VIM] sudo vim /etc/httpd/conf/httpd.conf #設定ファイルの最終行あたりに #以下のディレクティブを追記 HostnameLookups On #DNS逆引きした結果を正引きさせる場合はこちら HostnameLookups Double [/VIM] httpd.confを編集した後、Apacheを再起動すればOKです。 [VIM] sudo systemctl restart httpd [/VIM]

設定ファイルをいじれない場合の対処法

ただ、サーバーのroot権限を持っていない場合はhttpd.confの中身を変更できないことがほとんどであると思われます。その場合は、gethostbyaddr関数を利用すればIPアドレスからホスト名を取得でき、$_SERVER[‘REMOTE_HOST’]の代替となります。ユーザーのIPアドレスは$_SERVER[‘REMOTE_ADDR’]から取得できるので、これを利用しましょう。

[VIM] [/VIM]

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: