PHPプログラミング

最終更新日:
公開日:

入門

第6章 サーバー情報の取得

この章では、サーバー情報やプログラム実行時の情報を取得する方法を学んでいきます。ここで扱うスーパーグローバルは正直に言うと非常に地味ですが、システム構築をする際に便利な内容です。

目次

サーバー情報を取得するスーパーグローバル

今回も前章から引き続き、スーパーグローバルを使用していきます。
サーバー情報や実行時の環境情報を取得するには、$_SERVERを使用します。
まずはコードを打って確認してみましょう。

コード例

<?php
var_dump($_SERVER);

単純に$_SERVERに入っている情報を全て表示しているだけなので、ブラウザで実行してみると意味の分からない情報がズラーッと並んでいるかと思います。
今の形だと分かりづらいですが、よーく見てみると1つ1つがサーバーに関する情報であることが分かります。
いくつか掻い摘んで見てみましょう。
※ご自身の環境によって出力内容が異なります。

例えば$_SERVER[‘SERVER_SOFTWARE’]には、サーバーで実行しているWEBサーバーやPHPのバージョンを確認することができます。

WEBサーバー&PHPのバージョンの出力例

Apache/2.4.10 (Unix) PHP/5.5.20

WEBサーバーの公開ディレクトリ(公開フォルダとも言います)を取得したい場合は、$_SERVER[‘DOCUMENT_ROOT’]から取得できます。

WEBサーバーの公開ディレクトリ出力例

/Users/testuser/Homepage

PHPを実行した時の環境情報

実行しているサーバー情報の他に、PHPプログラムを呼び出したときの情報も取得することができます。
例えば、$_SERVER[‘HTTP_USER_AGENT’]からはアクセスした端末のOSやブラウザの情報を取得することができます。

アクセスした端末情報の出力例(MacのSafariからアクセス)

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.5.17 (KHTML, like Gecko) Version/8.0.5 Safari/600.5.17

Macのバージョンが「OSXの10.10.3」であることや、「Safari」を使用してアクセスしたことが分かります。
この情報を使用すれば、WindowsとMacの区別はもちろん、iPhoneやiPadなどのiOS、Androidなども区別することができるので、端末によって表示を切り替えることも可能になります。
最近はすっかりお馴染みになりましたが、パソコンやスマホで同じサイトへアクセスすると表示が異なっていることありますよね。
その機能は$_SERVER[‘HTTP_USER_AGENT’]のように端末情報を取得して実現することができます。

端末がアクセスしたときのURIをそのまま取得したいときは、$_SERVER[‘REQUEST_URI’]から取得できます。

アクセスしたURI

/test/?id=5

アクセスしてきたURIを直接そのまま取得できるので、アクセスされたページの判定、GET通信のデータが付いているかなどを判断する際に便利です。

上記の他にもhttps通信が有効であるかを取得できる$_SERVER[‘HTTPS’]や、ドメイン名を取得できる$_SERVER[‘HTTP_HOST’]など、プログラムを書く上で便利な情報が色々と詰まっています。
もし「こんな情報が欲しいな」と思ったら、一度var_dump($_SERVER);と出力してみるとヒントが見つかるかもしれません。

まとめ

以上、PHPでプログラムを書く際に便利なサーバー周り、実行時の環境情報を取得する方法を見てきました。$_SERVESRにどんな情報が入っているかを少し覚えておくだけでも、制作の際に役立つことが多々あります。余裕があったら、上記の他にどんな情報が入っているか覗いておくと、いざというときに役立つはずです。

この章で学んだこと

  • サーバー情報、実行時の環境情報はスーパーグローバル$_SERVERに入っている
  • サーバーの公開ディレクトリ(公開フォルダ)を取得したいときは$_SERVER[‘DOCUMENT_ROOT’]から取得できる
  • サーバーへアクセスした端末情報は$_SERVER[‘HTTP_USER_AGENT’]から取得できる
  • その他、サーバー関連で欲しい情報があるときは$_SERVERを確認してみる

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。