スポンサーリンク

PHPStorm – Xdebugを利用してPHP(WordPress)のデバッグを試してみる

CodaとかSublimeTextでWordPressのテーマをコーディングしていたのですが、変数内容を確認するのが面倒になってきたので、Xdebugを利用したPHPStormのデバッグ環境を整えることにしました。

WordPressとタイトルに入れましたが、WordPressの内容は少しだけです。

ほぼ、Mac購入時のデフォルト環境で設定しています。もし参考にするときは、ご自分の環境に合わせて適宜変更を加えてください。ローカル環境での説明ですが、リモート環境でもあまり変わらないと思います。

  バージョン
Mac OS X Lion 10.7.5
PHP 5.3.15
PHPStorm 6.0.3

Xdebugの設定

  1. Xdebugのダウンロード

    AcitveStateからダウンロードします。

    Komodo IDE 8 (version 8.0.2) > PHP Remote Debugging Client > Mac OS X (universal)

  2. xdebug.soの移動

    Komodo-PHPRemoteDebugging-8.0.2-78971-macosx.tar

    ファイルを解凍/展開する。

    利用しているPHPのバージョン毎にxdebug.soファイルが異なるため、PHPのバージョンを確認します。

    ターミナルを開き、php -vを実行します。

    PHPのバージョンと同じ数字のフォルダに入っているxdebug.so/usr/libexec/apache2/に移動します。

  3. php.iniの編集

    /private/etc/php.iniを編集します。

    もしphp.iniなければ同じフォルダにあるphp.ini.defaultを複製して、php.iniにリネームして利用します。

    Xdebugの項目に以下の内容を追加します。

     zend_extension="/usr/libexec/apache2/xdebug.so"
     xdebug.remote_enable = On
     xdebug.remote_handler = dbgp
     xdebug.remote_host = localhost
     xdebug.remote_port=9000
     xdebug.profiler_enable=1
     xdebug.profiler_output_dir="/var/tmp/xdebug"
     xdebug.idekey = "PHPSTORM"
     xdebug.remote_connect_back = on
    
  4. apacheの再起動

    状況に応じてターミナルから、

     sudo apachectl graceful
     sudo apachectl restart
    

    などで、再起動させます。

  5. インストールの確認

    localhostとしてアクセスできるディレクトリに、下記の内容を含むindex.php(indexである必要はなし)ファイルを作成します。

     <?php 
         phpinfo();
      ?>
    

    Webブラウザで作成したファイルにアクセスして、xdebugの項目があればインストール完了です

PHPStormの設定

  1. PHPの設定

    Preferences > Project Settings > PHP

    • php language level:

      • 5.3 または 5.4(環境に合わせる)
    • interpreter:

      • 利用しているPHPを設定します。設定しなくてもdebugerは動作しますが、複数のPHPをインストールしている場合には、正しく設定しておいたほうがトラブルを未然に防げます。

    ついでに、Include pathにWordPressのwp-inclideswp-adminを追加しておきます。External-Librariesに追加されますので、WordPressで使わているfunction等をサジェスト機能で呼び出すことができ、WordPressに関連するコードの未定義エラーもなくなります。

  2. PHP Serverの設定

    Preferences > Project Settings > PHP > Servers

    左上の+(プラスアイコン)をクリックして追加します。

     name:local(任意)
     host:localhost 
     port:80
     debugger:xdebug
    
  3. リモートデバッグ設定と動作確認

    RUN > Edit Configurations…

    Defaults > PHP Remote Debug

     Servers: local(2.で設定したServer)
     ide key: PHPSTORM (php.iniで設定した値)
    

    設定が終わったらツールバーにあるlisten php debug connectionsをクリックします。スタートするとアイコンの上部が緑色になります。

    xdebugが動作しているかを確認します。ターミナルを開き、下記のコマンドを実行します。

     lsof -n -P -i :9000
    

    上のようになっていれば大丈夫です。

  4. デバッグ実行

    デバッグ時に利用するWebブラウザで下記のURLを開きます。

    http://www.jetbrains.com/phpstorm/marklets/

    XdebugのIDE key:php.iniで設定したPHPSTORMを入力して、Generateをクリックすると、Bookmarkletが生成されます。

    • start debugger

      javascript:(/*%20@version%200.5.2%20/function()%20{document.cookie=’XDEBUG_SESSION=’+’PHPSTORM’+’;path=/;’;})()

    • stop debugger

      javascript:(/*%20@version%200.5.2%20/function()%20{document.cookie=’XDEBUG_SESSION=’+’’+’;expires=Mon,%2005%20Jul%202000%2000:00:00%20GMT;path=/;’;})()

    start debuggerstop debuggerをブックマークに追加します。リンクをブックマークツールバーにドラッグ&ドロップするなど、やりやすい方法でブックマークを作成します。

    a. 3.のlisten php debug connectionsを実行したまま、デバッグしたいローカルホストのURL(トップページなど)をWebブラウザで開きます。

    b. 開いた状態でブックマーク(Bookmarklet)のstart debuggerをクリックする。

    c. リロードするとPHPStormで設定したブレークポイントで止まり、変数の内容が確認できます。

おわりに

Bookmarkletとはわからずに、http://www.jetbrains.com/phpstorm/marklets/の画面で、start debuggerを「何も起こらないなぁ・・・」としばらくクリックしていました。

何はともあれ、少しはコーディングが楽になりそうです。