phpinfo()を使ってPHPの動作確認を行おう!


phpinfo()を使ってPHPの動作確認を行おう!

実行中のPHPの情報を表示するphpinfo()について初心者向けに解説します。

目次
  1. phpinfo()とは?
  2. 実行
  3. 注意点
  4. phpinfo()を使うシチュエーションの例
  5. PHPのバージョンを知りたいとき
  6. 文字化けするとき
  7. PHPのエラーが表示されないとき
  8. ※phpinfo()の内容が表示されないとき
  9. さいごに

phpinfo()とは?

phpinfo()は、実行中のPHPの情報を表示するの関数です。PHPはphp.iniという設定ファイルで細かい動作を指定できますが、その設定が自分の意図した通りPHPに読み込まれているかチェックするのに使用します。

実行

<?php
phpinfo();

これだけで、実行中のPHPの情報を表示してくれます。echoやprintは不要です。

image

注意点

phpinfo()は、本番の環境など一般公開されている場所には書かないようにしましょう。PHPの実行に関する詳しい設定情報が外部に漏れることで、悪意ある人物の攻撃のヒントにされてしまう可能性があります。

phpinfo()を使用するときは上記のコードのみが書かれたファイルを用意し、役目が終わった時点でファイルごと削除するのが良いでしょう。

phpinfo()を使うシチュエーションの例

image

phpinfo()には、開発者に役立つ情報がたくさん詰まっています。phpinfo()を活用できるシチュエーションの一部を以下で紹介します。(PHPのバージョンによって表示が若干変わることもあります)

PHPのバージョンを知りたいとき

自分が書きたいPHPの新しい構文を実行中の環境で使えるかチェックできます。あるいは何かのライブラリを使いたい場合、そのライブラリが動作中のPHPのバージョンに適合しているか確かめるためにも使用できます。

image

文字化けするとき

文字化けしているときは「mbstring」という項目をチェックしながらトラブルシューティングを行うことがあります。

全角文字列をechoやprintしても「???」と表示される場合は、「mbstring」という拡張モジュールがインストールされ、有効になっているか確かめる必要があります。

image

「mbstring」というモジュールがインストールされていない場合、この項目そのものが表示されません。文字化けの対処にはphp.ini以外の設定が必要なこともあるのでここで詳細を扱うことはできませんが、「phpinfo()で出力される情報は文字化けの問題の特定に役立つ」ということをまずおさえておくと良いでしょう。

PHPのエラーが表示されないとき

開発中、以下のようにPHPがエラーなどのメッセージを出すことがあります。デバッグに役立つので開発中は出て欲しい情報ですが、php.iniの設定によっては出てこないこともあります。

Notice: Undefined variable: aaa in ....

このときはdisplay_errorsという項目が「On」になっていることを確認しましょう。
※display_errorsが「On」にも関わらずエラーが表示されない場合は、error_reportingという項目もphp.iniで確認してください。PHPのエラーは重大さに応じていくつか種類がありますが、Noticeのような重大さの低いメッセージはデフォルトで出力されない設定になっていることがあります。

image

※本番環境でPHPのエラーが表示されるのはセキュリティ上良いことではありません。 リリース前にdisplay_errorsは「Off」にするようにしましょう。

※phpinfo()の内容が表示されないとき

いくつかの原因が考えられますが、初心者に多いのは以下の状況かもしれません。

  • 違うファイルをブラウザで読んでいる
  • <?php の 「<」 や「?」などが全角文字になっている
  • セミコロンの打ち忘れで構文エラーになっている

例えば構文エラーの場合、「500」という文字がブラウザに出てphpinfo()の情報は表示されません。他にもPHPがインストールされていなかったり、Webサーバのソフトウェアが正常に起動していなかったりしてもphpinfo()は表示されません。

Webサイト担当者としてのスキルが身に付く

無料カウンセリングはこちら

さいごに

PHPが意図した動きにならないときは、phpinfo()で出力された情報を確認しながら原因を調査すると良いでしょう。セキュリティの観点から、phpinfo()は インターネット上に公開されない場所で 実行するのがベストです。


堀内滉貴
この記事を書いた人
堀内滉貴
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp