「PHP」に設定されている情報を表示できるphpinfo関数について、その概要やどのように使用するか、使用するにあたっての注意点について解説していきます。
phpinfoとは、「PHP」に設定されている情報を表示させる関数です。ローカルでphpinfoを実行するには、「PHP」とWebサーバーソフトウェア(たとえばApacheやNginxなど)が必要です。
本記事では、phpinfoの概要と使い方、使用時の注意点を解説します。
目次
phpinfoとは、「PHP」に設定されている情報を表示させる関数です。
php.iniという設定ファイルに変更を加えた際、その変更が反映されているかを確認する場面で使用されます。またローカルでphpinfoを実行するには、「PHP」とWebサーバーソフトウェアのApacheが必要です。
しかしphpinfoは、現在の「PHP」の状態についてのあらゆる情報を表示する関数であるため、使いどころが限られる関数でもあります。
phpinfo関数を使う際には、次のことに注意しなければなりません。
ここからは、phpinfo関数を使うにあたっての注意点を解説します。
WordPressは、バージョン5.2からサイトヘルス機能というタブに飛ぶことで環境の詳細情報を得られる機能が追加されています。
そのためphpinfoはサイトヘルス機能では得られないような、より詳細な情報を把握したい場合に限り利用することになります。通常、phpinfoが必要になる場面は発生しにくいことから、phpinfoを使うシーンは少ないでしょう。
phpinfoはサイトに関するさまざまな情報を表示するため、扱う際のリスクが高く、Web上に公開されているWordPressのサイトで実行するのは非常にリスクが高いです。
そのためphpinfoは主にローカル環境で使用します。たとえば「ローカル環境に「PHP」をダウンロードした際に問題なく動作しているか」や、「ローカル環境で「php.ini」というPHPの設定ファイルが配置されている場所の確認」などに使用するのがよいでしょう。
phpinfo関数には、以下のような使い方があります。
ここからは、それぞれの使い方について解説します。
最初はブラウザにPHP情報を表示させましょう。
メモ帳などのテキストエディタに、以下のコードをペーストしてください。
<?php phpinfo(); ?>
その後、名前をつけて保存します。ファイル名はどれでも問題ありませんが、拡張子は「.txt」から「.php」に変更してから保存してください。そして、保存したファイルを自身のローカル環境のドキュメントルートに移動し、ローカルサーバーを起動します。
最後に、ブラウザのアドレスバーに「localhost(もしくはIPアドレス)/先ほどつけたファイル名」と入力し移動することでPHPの設定が表示されます。
phpinfo関数は、Windowsのコマンドラインでも使用できます。
コマンドラインとは、コマンドを入力することでコンピュータに対して命令を送れる黒い画面です。コマンドプロンプトなどのアプリケーションを開き、以下のコマンドを入力し実行してください。
php -r phpinfo();
すると、「PHP」のバージョンなどさまざまな情報が画面に表示されます。ブラウザに表示する方法と比べると、コマンドを入力するだけで「PHP」の詳細な情報が得られるので、こちらの方法がおすすめです。
しかし、コマンドラインの結果表示は表にまとめられずに文字だけが表示されるので可読性は悪くなってしまいます。そのため、「自分がどのような情報を得たいか」によってブラウザ表示とコマンドライン表示を使い分けましょう。
phpinfo関数は、引数を指定することで表示するセクションを変更できます。
たとえば、ドキュメントルートに配置したファイルの内容を、以下のように変更してみましょう。
<?php phpinfo(INFO_MODULES); ?>
コマンドラインを使用する際にも、同様に引数を指定します。
“php -r phpinfo(INFO_MODULES);”
結果として、phpinfoのさまざまな情報の中から「PHP」のモジュール設定に関する情報だけを表示できます。
phpinfoは、サイトに関するさまざまな情報を表示するリスクのある関数です。そのため、やむなく公開サーバーに設置する場合は、アクセスできるIPを制限することをおすすめします。
アクセスできるIPを制限する際は、phpファイルに以下のような記述をしてください。
<?php if ($_SERVER['REMOTE_ADDR'] !== 'xxx.xxx.xxx.xxx') die(); ?> <?php phpinfo(); ?>
上記の記述をおこなうことで、IPアドレス「xxx.xxx.xxx.xxx」以外から接続した場合は、phpinfoの情報が表示されなくなります。
phpinfo関数で指定する引数は、あらかじめ割り振られている数値でも指定できます。
引数に割り振られている数値は、以下の通りです。
INFO_GENERAL | 1 |
INFO_CREDITS | 2 |
INFO_CONFIGURATION | 4 |
INFO_MODULES | 8 |
INFO_ENVIRONMENT | 16 |
INFO_VARIABLES | 32 |
INFO_LICENSE | 64 |
INFO_ALL | -1 |
例として、「INFO_CREDITS」を指定したい場合は以下のように指定します。
<?php phpinfo(2); ?>
phpinfoの情報にはphp.iniファイルの場所が記載されているため、使用することによってphp.iniファイルの位置を確認可能です。php.iniファイルは、「PHP」のプログラムを動かすための設定ファイルです。サーバー上で「PHP」が起動する際に読み込まれます。
php.iniファイルの場所は、phpinfo情報内の「Loaded Configuration File」に記載されており、引数を指定して記述することで、「Loaded Configuration File」が含まれるセクションのみを表示できます。
<?php phpinfo(INFO_GENERAL); ?>
phpinfoの情報には、EGPCS変数の情報も記載されています。
EGPCSとは、Environment (環境変数)・Get・Post・Cookie (クッキー)・Serverの頭文字を取った用語で、スーパーグローバルと呼ばれるスクリプト全体を呼び出しできる変数です。
EGPCS変数は、phpinfo情報内の「PHP Variables」というセクションに記載されています。
以下のように引数を指定して記述することにより、「PHP Variables」セクションのみを表示することもできます。
<?php phpinfo(INFO_VARIABLES); ?>
なお、特定のスーパーグローバル変数(たとえば $_SERVER)の情報を表示したい場合は、以下のように直接print_rなどを用いて表示できます。
<?php print_r($_SERVER); ?>
「PHP」にはさまざまな拡張機能がありますが、phpinfoでどの拡張機能がインストールされているのかの確認が可能です。「PHP」にインストールされている拡張機能の情報は、それぞれの拡張モジュール名のセクション内にphpinfo情報が記載されています。
以下のように引数を指定して記述することで、「Loaded Modules」項目が含まれるセクションのみの表示も可能です。
<?php phpinfo(INFO_MODULES); ?>
phpinfoの情報には、環境変数の情報も記載されています。環境変数とはサーバーサイドに設定されている変数のことで、PHPプログラム内で自由に呼び出せる変数です。
環境変数の情報は、「Environment」セクションに記載されています。以下のように引数を指定して記述することで、「Environment」セクションのみを表示することもできます。
<?php phpinfo(INFO_ENV_VARS); ?>
上記コードを記述することで、サーバー環境変数が表示されます。
phpinfoを使うことで、サーバーに関するさまざまな情報がページに記述され閲覧できるようになります。しかしphpinfoが記述されたファイルを悪意のあるハッカーが検索し、悪用されてしまう可能性も出てきます。
セキュリティの観点から、phpinfoの使用を禁止しているサーバーもあるほどです。そのため、Web上でphpinfoを使用するのはおすすめできません。
どうしても必要な場合に使った場合は、phpinfoを使い終わったらphpinfoページを必ず削除しましょう。
phpinfoは現在の「PHP」の状態についてのあらゆる情報を表示し、PHPの拡張機能や環境変数・php.iniファイルの場所などの確認をブラウザとコマンドラインでおこなえます。
しかし、Web上では重要なサーバー内の情報がパブリックな場に上がることになるため、悪質なハッカーの標的にもなり得ます。本記事を参考にphpinfo関数はローカル環境のみで使用し、Web上でどうしても使用しなければいけないときには十分に注意し、使用後はphpinfoページを必ず削除しましょう。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール