PhpStormとxdebug

先日からJet BrainsのRuby開発環境である RubyMine を試してる。

大体、通常開発に使ってるのはEmacsかOS Xだと BBEdit なんだけど、時々他のエディタや環境に浮気して、またいつか戻ってくるみたいな繰返しが多い。サーバー上ではviが多いけど。

今回は、Komodo IDE/EditATOMVisual Studio Codeなどを試しながら、これまで有償かつ言語毎にライセンスが別れてて避けてたJet BrainsのIDEも試してみた。

RubyMineを試して結構よかったので、PhpStorm どうだろうと試してみて、デバッガーで少々設定につまったのでメモとして記録。

評価は、OS X上のPhpStorm 2016.1.2で行なってます。

PHP実行環境を設定

PhpStorm

PreferencesでPHPの実行環境設定を行う。(i)ボタンを押すと現在のPHPのConfigurationが表示できるので、iniなんかの設定状態も確認できる。

xdebugの設定

zend_extensionの値は、環境に応じて。

今回、xdebug.remote_autostartは1にしませんでした。xdebug.remote_autostartを1にすると、サーバーにPHPのリクエストが来る度に、かならずxdebugのセッションがはじまり実行が最初に止ります。開発だけのサーバーならいいのだけど、他でも利用してると常に止まるのでそれは避けたい所。

phpstorm

xdebug.idekeyはPhpStorm側の設定と合せるようです。

Run/Debug Configurationの(+)ボタンから、PHPのビルトインWebサーバーを使うか、httpdなどのサーバーを使うか等のデフォルトを選んで、オプションを設定していくような形になります。

Webアプリケーションをデバッグ開始する時

xdebug.remote_autostartを無効にしてあるので、デバッグを開始する時は一手間必要です。

こちらのページから、開始用のブックマークレットを作成します。IDE keyをxdebugのiniに設定したものを入力して”GENERATE”ボタンを押すと、デバッグ用のブックマークレットリンクが出来る。

それをブラウザのブックマークレットに登録しておけば、デバッグの開始・停止が楽に制御できます。

xdebugは、xdebug.remote_autostartが設定されてない時は、特定のCookie値の設定を見て、デバッグの開始を決定してるらしい。

この辺に記載がある。

debug_menu

メニューのRunにある、「(Start |Stop) Listening for PHP Debug Connections」を選択して、デバッグコネクションを監視する状態にしておく必要があります。

また「Break at first line in PHP scripts」にチェックが入ってるとかならずPHPの実行の最初の行で止まるので、ブレイクポイント張ってるなら、チェック外した方がストレスなくていい。

その他

気になる所としては、xdebugが有効になっているからか、リクエストからデバッグ開始までが凄く遅い。

現在の評価環境は、OS X上でphpもhttpdも動かしてるけど、自前の環境でブラウザがリクエストを出してから、20〜30秒位かかってる気がする。

単純にステップ実行と値を見るだけじゃなく、変更や式の評価もできるんでまだいいけど、繰返し実行には辛い時間です。

この辺は設定の変更なんかで直るのかもしれないけど、一般的にxdebugが動いてると遅いのは仕方ないみたい。

composerでも警告が表示されてて、こんなページも用意されてるみたいだし。

現状、開発が仕事になってない状態なんだけど、まあ趣味というか仕事に備えるというか、そんな感じで…

人は、これを現実逃避という。