- 2011-05-30 (月) 0:05
- PHP
PHPerにはお馴染みの関数、phpinfo()の見方です。
PHPには多数の設定項目があり、それらを一覧する機能としてphpinfo()があります。
設定項目の他にインストールされている拡張機能や実行環境の情報が確認できるので、おそらく多くのPHPerが活用していると思います。
これからPHPを学ぶ人ならおさえておきたいphpinfo()の見方をまとめてみました。
1. phpinfo()の実行
まずは基礎の基礎、phpinfo()の実行です。
phpinfo()自体はただの関数ですので、PHPソースに記載するだけで良いです。
以下のソースをinfo.phpというファイルで保存します。
<?php phpinfo();
ブラウザでこのファイルにアクセスすればphpinfoが表示されます。
1-1. ファイル名は?
Webでのサンプルなどを見るとphpinfo.phpというファイル名にしていることが多いようですが、ファイル名は何でも良いです。
1-2. 他のスクリプトを書いても良い
phpinfo()関数ではこの関数が実行されたタイミングで情報を出力するので、その前後で他の処理を書いても問題ありません。
例えば、以下のソースではphpinfo()の前後で現在時刻を出力しています。
<?php // 何か処理 echo date('Y/m/d H:i:s').'<br />'; phpinfo(); // 何か処理 echo date('Y/m/d H:i:s').'<br />';
1-3. アクセスできる IP を制限する
phpinfoの情報は広く公開すべき内容ではないので、もし公開サーバで設置するならアクセス制限をかけた方が良いでしょう。
以下のソースでは、接続元IPアドレスが「xxx.xxx.xxx.xxx」以外ではphpinfoを表示しないようにしています。
<?php if ($_SERVER['REMOTE_ADDR'] !== 'xxx.xxx.xxx.xxx') die(); ?> <?php phpinfo(); ?>
常にphpinfo()を表示する必要は無いでしょうから、内容を確認したら削除しておきましょう。
1-4. 表示セクションを変更する
phpinfo()を引数無しで実行すると全てのセクションが表示されますが、引数を指定することで、表示セクションを指定することができます。
引数にはセクション毎にINFO_*という定数が用意されていますので、こちらを指定します。なお定数値は各ビットの値となっているのでビット演算子で連結して複数のセクションを表示することができます。
<?php phpinfo(INFO_CONFIGURATION); // 現在のディレクティブ(設定)情報を表示
<?php phpinfo(INFO_ENVIRONMENT | INFO_VARIABLES); // $_ENVで取得できる環境変数とEGPCSで設定されている値を表示
指定できる定数についてはPHPマニュアルを参考にして下さい。
=> PHP: phpinfo – Manual
2. phpinfoの見方
phpinfoには数多くの情報があります。実際の良く確認する内容から各セクションの見方を見ていきましょう。
2-1. PHPが動作しているかと確認する
まずはPHP自体が動いているかをphpinfo()で確認します。おそらく多くの方がPHPをインストールした際にはとりあえずphpinfo()を実行するでしょう。
phpinfoが表示されれば、PHP自体は動作していることが確認できます。
2-2. コンパイルオプションを確認する [Configure Command]
PHPには多くのコンパイルオプションがあり、指定によって様々な機能を有効無効にすることができます。
現在動作しているPHPではどの機能が有効になっているかと確認します。
上記はyum(RPM)でインストールしたPHP 5.3.6のコンパイルオプションですが、様々な指定がされています。
2-3. php.iniファイルの位置を確認する[Loaded Configuration File等]
「Loaded Configuration File」でPHPの設定ファイルであるphp.iniのパスを確認します。
RPMでインストールしたり、ソースからインストールしたりと何度もインストールを繰り返しているような場合、どのphp.iniを読み込んでPHPが実行されているかが分からなくなる時があります。(php.iniを変更したのに設定が反映されず、結局他のphp.iniが有効になっていたり。)
そういった際に現在有効となっているphp.iniファイルを確認します。
またRPMなどパッケージでインストールされたPHPでは拡張機能毎に設定ファイルが分けられているケースがあるので、「Additional .ini files parsed 」でphp.ini以外で読み込んでいる設定ファイルを核にします。
2-4. 設定ディレクティブの値を確認する[Local Value][Master Value]
Configureセクションには現在設定されている各設定ディレクティブの値が表示されます。
1行につき1ディレクティブとなっており、「Local Value」と「Master Value」の2種類が表示されます。
これらの違いはマニュアルで明記されているわけではないのですが、「Master Value」が、php.ini(PHP-FPMなら/etc/php-fpm.d/www.conf)の設定値、「Local Value」が、httpd.confや .htaccess、ini_set()で設定した設定値となっているようです。phpinfo()を実行した環境では「Local Value」の値が有効となっています。
(httpd.conf は、Local Value に表示されていました。@DQNEOさん、ご指摘ありがとうございました。)
「Local Value」と「Master Value」を見て、想定どおりの設定値となっているか、なっていない場合はLocal Valueで書き換えられていないかなどを確認します。
2-5. 拡張機能がインストールされているかを確認する
PHPには多くの拡張機能があるので、どの拡張機能がインストールされているかを確認します。
拡張機能が有効になっているとConfigureセクション内に専用のセクションが表示されます。専用セクションでは拡張機能のバージョン、設定情報、設定ディレクティブも表示されます。
例えば上記であれば、apcが有効になっていて、各設定情報が確認できます。
よくあるパターンとしては、yumでphpをインストールするとmbstringやpgsqlが有効になっていないので、それらがインストールされているかと確認したりします。
2-6. 環境変数を確認する
phpinfo()を表示している環境で定義されている環境変数を確認します。
通常あまり意識しないかもしれませんが、例えばhttpd.confで環境変数を定義して、その値によりPHPアプリケーションの挙動を変えたい時などに環境変数の値を確認したりします。
2-7. EGPCS変数を確認する
EGPCS($_ENV、$_GET、$_POST、$_COOKIE、$_SERVER)の値を確認します。
$_SERVERでHTTPリクエスト関連の値を見たり、$_COOKIEでセットされているcookieを確認したりします。
2-6 / 2-7 については、phpinfo()ではなく、PHPスクリプトでvar_dump()したりすることが多いですが、設定されている値が全て確認できるのは便利ですね。
おまけ. ブラウザの検索を使う
知りたい内容がはっきりしているなら、できるだけブラウザの検索機能(多くは[ctrl]+[f])で、目的のキーワードを入力して検索しましょう。
目で上から順に追っていって探すこともできますが、見落としたり、あれ、どこだっけ?とあちこち見て回るのも無駄なので、知りたい内容がはっきりしているならさっさと検索した方が早いです。
もちろん全部を眺めてみたいという目的であれば、じっくり見るものアリです。
3. コマンドラインでphpinfo
ここまではブラウザでphpinfoを見る方法を紹介してきましたが、コマンドライン(CLI)環境でもphpinfoを表示することができます。
方法は、phpコマンドに「-i」オプションを付けて実行するだけです。出力はテキスト形式となります。
$ php -i phpinfo() PHP Version => 5.3.6 System => Linux xxx.xxxx.xxxxx 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:20 EST 2010 x86_64 Build Date => Apr 15 2011 18:10:43 .....
個人的にはブラウザ上よりCLIでphpinfoを確認することが多いです。良く使う方法としては以下です。
3-1. phpinfoをファイルに保存
$ php -i > info
3-2. php.iniファイルを探す
$ php -i | grep ini
iniファイルを見るには「php –ini」という方法もあるようです。(@murstsさん、ありがとうございました。)
$ php --ini
3-3. include_pathを確認する
$ php -i | grep include_path
3-4. apcがインストールされているか確認する
$ php -i | grep apc
phpinfo()でPHPの状態を知る
phpinfo()には多くの情報があるので、PHPがどのようにインストールされているか、どの機能が有効になっているか、設定ディレクティブにどの値が設定されているかを一元的に把握することができます。
PHPを活用していくなら避けて通れない内容ですので上手くphpinfo()を活用して下さい。
まずは手元の環境でどのような設定をされているかを確認してみてはいかがでしょうか。
- Newer: Webシステム開発に便利な7つのツール
- Older: PHPでsleep sort
トラックバック:2
- このエントリーのトラックバックURL
- /blog/2011/05/basic_of_php_phpinfo.html/trackback
- Listed below are links to weblogs that reference
- PHPの基本、phpinfo()の見方 from Shin x blog
- pingback from phpinfo() の「Local Value」と「Master Value」 | lazynotes 11-08-25 (木) 16:05
-
[…] PHPの基本、phpinfo()の見方 – Shin x blog […]
- pingback from 【PHP】下らねぇ質問はID出して書き込みやがれ 128 251-300 | PHPの話題 13-06-23 (日) 9:16
-
[…] http://www.1×1.jp/blog/2011/05/basic_of_php_phpinfo.html […]