• LIGの広告成功事例
WEB

PHPのデバッグ用拡張モジュール「Xdebug」の導入方法と使い方

PHPのデバッグ用拡張モジュール「Xdebug」の導入方法と使い方

こんにちは。エンジニアのヤスタカです。
エンジニアのみなさんは、書いたプログラムが思い通りに動いてくれないとき、どうやってその状況を切り抜けていますか?

自力でもくもくと解決する。人に聞く。神に祈る。などなど、解決方法はさまざまあるかと思いますが、今回は自力で解決する際に役立つデバッグ支援ツール、「Xdebug」を紹介します。

Xdebugとはなにか?

「Xdebug」は、PHPのデバッグ用の拡張モジュールです。

var_dumpの出力結果を見やすくしてくれたり、プロファイリングツールとして処理が遅い部分を突き止めてくれたり、Javaとかの開発で便利なステップ実行をPHPでも実現してくれたりします。

Xdebugのダウンロードページ
http://www.xdebug.org/download.php

今回はMAMP環境でローカル開発環境にインストールしてみました。

Xdebugのインストール

まずはPHPを動かしているサーバーにXdebugをインストールします。PECLを使って導入するのが簡単です。

# pecl install xdebug

ただ、MAMPにはXdebugが標準でインストールされているので、MAMP環境の場合は不要です。

インストールが終わったら、php.iniの方にも設定が必要です。次の行をphp.iniに追加しましょう。

zend_extension="/Applications/MAMP/bin/php/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.coverage_enable=1 
xdebug.default_enable=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp"
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000

「php.iniの場所がわからない!」という場合はMacのターミナルを開いて、

locate php.ini

と打ち込んでみましょう。

/Applications/MAMP/conf/php5.1.6/php.ini
/Applications/MAMP/conf/php5.2.17/php.ini
/Applications/MAMP/conf/php5.3.10/php.ini
/Applications/MAMP/conf/php5.3.13/php.ini
/Applications/MAMP/conf/php5.3.14/php.ini
/Applications/MAMP/conf/php5.3.20/php.ini
/Applications/MAMP/conf/php5.3.27/php.ini
/Applications/MAMP/conf/php5.3.28/php.ini
/Applications/MAMP/conf/php5.3.29/php.ini
/Applications/MAMP/conf/php5.3.5/php.ini
...

MAMPをインストールしていると、このようにたくさんのphp.iniが見つかると思いますが、普段MAMPで実行しているphpのバージョンのphp.iniを編集しましょう。

var_dumpの出力結果を見やすくする

インストールが終わったあとにサーバーを再起動すると、Xdebugが有効になっているはずです。試しにvar_dumpの出力結果を確認してみましょう。

まずはXdebugを入れてない場合から。

xdebugなし

うーん。見づらいですね。

続いて、Xdebugを入れた場合。

xdebugあり

インデントや色が付いて、arrayの中身などが見やすくなっていますよね。これだけでもXdebugを入れる価値はあると思います。

ステップ実行の設定

Xdebugで一番便利なのは、Javaなどでお馴染みのステップ実行がPHPでも実現できてしまうことだと思っています。

僕のメインエディタがPhpStormなので、今回はPhpStormを例にしていますが、EclipseやNetBeansなどの他のIDEや、Sublime TextやAtomなどものエディタでもプラグインを入れればステップ実行を実現できてしまうんです!

まずはPhpStormを開いて、RUN > Edit Configurations……を選択します。

 
debug

+ボタンを押して、webApplicationsを選択し、serverのドメインを……、と文字で説明するのは面倒なので、上のgif動画をご覧ください。
設定が完了したあと、メイン画面の虫のようなボタンを押すと、デバッグモードが立ち上がります。

コードの横にBreakpointを設定してデバッグモードを起動すると、実行が一旦Breakpointで止まり、変数の中身などを確認しながら順番にコードを実行していけます。

ブレークポイント

debug画面

おわりに

コードが思い通りに動いてくれないときって、ほんとストレスが溜まりますよね。でもそれを修正し、うまく動くようになったときの「よっしゃゃゃゃあ!」っていう快感は格別です。

みなさんも今回紹介した「Xdebug」で少しでもデバッグが捗れば、そんな快感をより得られるかと思います。

この記事を書いた人

ヤスタカ
ヤスタカ バックエンドエンジニア 2015年入社
長野の豪雪地域、野尻湖オフィスでバックエンドエンジニアやってます。寒いのは苦手です。