【PHP】デバッグについて

デバッグとは?
よく聞く似た言葉でバグがあります。バグはプログラムのおかしいところです。バグがあるとプログラムは期待した通りに動きません。そして、デバッグとはバグの原因を探して取り除く作業のことです。作成したPHPプログラムのエラーを訂正したり、プログラムが想定通りに動くかどうかのチェックをしたりすることをデバッグといいます。
PHP デバッグでよく使う関数
カッコを閉じ忘れたときなどはプログラムの動作が停止するためデバッグするのは容易ですが、それ以外の場合には実際に値を入れて動作確認する必要があります。確認する方法としてPHPではよく関数が使われます。デバッグに便利な関数についてみていきましょう。
var_dump関数
var_dumpは変数の情報を表示する関数です。var_dumpを使うことによってオブジェクトに入っている値や配列、変数を確認することができます。PHPでエラーが起きたときに特によく使われる関数の1つです。
var_dumpを使うときは var_dump(変数);
と記述することによって変数の情報を表示します。
・数字、文字列の場合
$hoge1 = 100;
$hoge2 = 'あいうえお';
var_dump($hoge1); // 出力結果:int(100)
var_dump($hoge2); // 出力結果:string(15) "あいうえお"
$hoge1の整数の場合は整数型「int」であることを表示し、$hoge2の文字列の場合には文字列「string」とバイト数を表示しています。
・配列、連想配列の場合
$user = array(
'name' => 'たなか' ,
'age' => '30' ,
'gender' => '男'
);
var_dump($user);
出力結果
array(3) {
["name"] => string(9) "たなか"
["age"] => string(2) "30"
["gender"] => string(3) "男"
}
配列の場合はまず、変数の内容がarray(配列)であることを示し、( )内には要素の数が表示されます。そして配列内の各キーとそれに格納されたデータの情報が表示されます。 配列は3つの要素で構成されているためarray(3)と表示し、$user["name"]には文字列"たなか"が格納されているためstring(9)と文字列が表示されます。 このようにvar_dumpを使うことによって、変数や配列の中身を詳しく知ることができます。
print_r関数との違い
print_rもオブジェクトに入っている値や配列、変数を展開して表示する関数です。
$user = array(
'name' => 'たなか' ,
'age' => '30' ,
'gender' => '男'
);
print_r($user);
Array
(
[name] => たなか
[age] => 30
[gender] => 男
)
print_r関数では、配列であることと各要素の値だけが表示されています。そのため var_dump関数のほうが要素数や型、バイト数などの情報をより詳しく表示します。
PHPのIDE(統合開発環境)
規模が小さいときはvar_dump関数などを使ってデバッグしますが、規模が大きくなると確認するのが大変です。大規模な開発ではIDE(統合開発環境)を利用してよりデバッグしやすい環境で開発を行いましょう。
Eclipse
IBMによって提供されている無料のの統合開発環境です。基本的にはJavaでの開発に対応していますが、プラグイン導入することでPHPも利用することができます。途中までの入力内容から、タグ・メソッド・プロパティなどを予測変換し、構文エラーチェック機能など多くのデバッグ機能を備えています。
PhpStorm
有償のIDEではありますが、近年人気急上昇しているIDEです。IDEからデータベースを操作することもでき、変数の値参照やXdebugとの連携など、多くのデバッグ機能を備えています。
NetBeans
デバッグオプション豊富なIDEです。Xdebugとの連携や、変数のウォッチとバルーン評価、ブレークポイントの設定など多くのデバッグ機能を備えています。
※Sublime Text(テキストエディタ)
現在はSublime Text3がリリースされています。テキストエディタですが、Xdebugとの連携でデバッグ環境を作ることが可能です。
Xdebug
「Xdebug」は、PHPのデバッグ用の拡張モジュールです。Xdebug を使うことで値をカラー表示してvar_dumpの出力結果を見やすくしてくれたり、プロファイリングツールとして処理が遅い部分を分析してくれたりします。
Xdebugのインストール
Xdebugを使うには、PHPを動かしているサーバーにXdebugをインストールする必要があります。下のコマンドを実行するとインストールできます。
pecl install xdebug
インストールが完了するとphp.iniの設定が必要です。下のコマンドでphp.iniに設定を追記しましょう。
zend_extension="[サーバーのパス]php/modules/xdebug.so"
PHP その他デバッグの方法
・エラーの箇所を見つける
書いたコードが思ったように動作しない場合は、デバッグをしてエラーが発生してる箇所を見つける必要がります。どこまでプログラムが通っているのかわからない場合は、echoなどの文字を出力させるコードをいくつか入れてみましょう。文字が表示されているところまではプログラムが通っていることがわかります。文字表示をうまく使ってエラー箇所を見つけてみましょう。
・ログファイルの確認
デバッグが起こった際は、エラーが書き出されるログを確認しましょう。ログファイルはphp_info()などで確認できます。設定のlog_errorsがオンになっていれば、設定のerror_logで指定されたファイルにログが書き出されます。
・コマンドオプションでチェック
コマンドでphp -aを実行することによってインタラクティブモードになります。PHPのインタラクティブモード(対話モード)で実行結果を確認しながらデバッグすることもできます。
まとめ
いかがだったでしょうか。デバックを上手くすることは、開発をより素早くこなせるようになるために必須のスキルといえるでしょう。IDEで開発環境を整え、より良いデバック環境で開発することをおすすめします。