PHPのデバッグ方法!今更聞けないデバッグツールの使い方

  • 2017-11-9

PHPは、Webアプリ開発に最適なスクリプト言語です。その手軽さから注目を集め、様々な有名サイトがPHPで構築されています。そんなPHPですが、デバッグはどのように行うのでしょうか? 今回は、PHPでのデバッグ方法についてご紹介いたします。

デバッグの意味


プログラムの中に潜んでいる異常のことを、バグと呼びます。
例えば、以下のコードを見てみましょう。

function example($val){
echo 10/$val;
}

“”/””は割り算を意味します。
上記のコードには、あるバグが潜んでいますが判りますか?
$valが0の時、0で割ろうとしてエラーになります。これがバグの一例です。

テストを通じて、こうしたバグを潰していくことをデバッグと言います。

PHPをデバッグモードにする方法


PHPでデバッグする方法には様々な種類があります。典型的な方法は、PHPのデバッグ用関数””var_dump()””を使う方法です。例えば以下のようになります。
var_dump($test);

このコードは、$test変数の中身を出力します。小規模ならこれでもデバッグできますが、規模が大きくなると大変です。そこで登場するのがIDE(統合開発環境)です。IDEを利用してデバッグを行うと、随分と手軽にデバッグできます。

デバッグの方法は使用してるIDEによって異なりますので、以下、代表的なIDEでの方法をご紹介します。

NetBeans

デバッグオプションが豊富です。デバッガ・ポートやセッションID、最初の行で停止するかどうか、変数のウォッチとバルーン評価などなど、盛り沢山です。ブレークポイントを設定して、任意の行で停止することもできます。ブレークポイントで停止して、変数にカーソルをあてると変数の値がバルーンに表示される、という感じで、非常に楽にデバッグできます。

PHPStorm

こちらは有償のIDEとなります。デバッグ機能はだいたいNetBeansと同じです。
ブレークポイントの設定、変数の値参照など、便利なデバッグ機能がそろっています。

PHPのデバッグ表示関数


まずは、先程ご紹介したvar_dump()関数です。PHPに標準で装備されているので、モジュール追加が不要で手軽に使えます。var_dump()関数と似たようなものに、print_r()関数があります。print_r()関数は、第2引数にtrueを渡すと、出力内容を変数にセットすることができます。

$debug_write = print_r($val, true);

とすると、$debug_writeに$valの中身の詳細がセットされます。後でまとめて表示したい時などに便利です。また、呼び出し元のバックトレースを取得するdebug_backtrace()関数というものもあります。オブジェクト指向で多層的に関数を呼び出している場合に威力を発揮します。

例えば、このように使います。

function example01($val){
example02($vale);
}
function example02($val){
echo $val;
dump();
}
function dump(){
print_r(debug_backtrace());
}

example01(“”test””);

ただのprint_rだと、dump()でエラーが発生してもその行しか表示されません。debug_backtrace()関数を使うと、dump()の呼び出し元であるexample02()→example01()と遡って、情報を表示してくれます。

PHPのデバッグログの解析方法

ログファイルの確認

PHPのエラーが書き出されるログがありますので、デバッグ時にはこれを確認しましょう。ログファイルはphp_info()などで確認できます。設定のlog_errorsがOnになっていれば、設定のerror_logで指定されたファイルにログが書き出されます。

デバッグモードで出力

PHPで開発されたWordPressというCMSの場合は、WordPressをインストールしたディレクトリの直下にあるwp-config.php内の定義「WP_DEBUG」をtrueにすることでデバッグモードになります。WordPressのプラグインを開発する場合は試してみましょう。

コマンドオプションでチェック

PHPの実行エンジンにコマンドオプションを指定することでもデバッグできます。
“”-a””オプションは、PHPのインタラクティブモードを起動します。これを使うと、PHPの実行結果をすぐに確認できます。

“”-l””オプションは、PHPソースの文法チェックを行ってくれます。

開発ツールでも確認してみよう

XdebugというPHPの外部ツールがあります。これはPHPでのデバッグを補助してくれるツールで、導入しておくととても便利です。

つまづいていたステップの修正

デバッグによってバグを発見したら、その箇所を修正します。

まとめ

今回は、PHPでのデバッグ方法についてご紹介しました。var_dump()関数のようなデバッグライトを埋め込む方法の他、IDEを利用してブレークポイントを設定する方法もあります。小規模の開発ではデバッグライトでも良いでしょうが、規模が大きくなればIDEを利用することをおすすめします。

ページ上部へ戻る