phpstorm でphpデバッグ phpstorm で コマンドラインのコンソールで実行したphpをデバッグする設定。
実行環境には、phpstorm 20202.2 と WSL でインストールしたphp を用いる
wsl のphp を使ったときに、ファイルを実行してブレークポイントで止めることをする。
wsl を使う場合のプロジェクト設定。
新規作成でプロジェクトを選ぶ。
新規で空のphpプロジェクト
デバッグしたいスクリプトを作る。 Run→ debug を選ぶ
ファイルをどうやって実行するかを選ぶ。
ここで、インタプリタを設定する。
なにもしてないと、インストール済みのPHPを探してくれるが、WSLの場合は自分で指定しないと探してくれない。
インタプリタを設定する。
インタプリタの種類を選ぶ。WSLやVagrantやSSHはここで設定する。
WSLを選ぶと、WSLの中から which php して自動的に選んでくれる。
ここでは、プロジェクト単位の設定になる。もし全体に設定して使いまわしたいときはチェックを外せばいい。いつでもできるので確実に動くのを確認してから外したらいい。
設定が終わったら、インタプリタが設定される。インタプリタとコード分析のベースとなるバージョンを選んで・・・ これでデバッグが実行できるようになる。いん
デバッグで実行すると次のような画面になる。下側にデバッグウインドウが表示される。
ブレークポイントを設定してデバッグで実行すると、ブレークポイントでちゃんと止まるようになる。
ここでは、phpはシンプルにコマンドから php-cli を実行している。
phpstorm が php-cliを実行するときにデバッガを有効にして起動してくれる。
デバッグが実行されると次のようなプロセスが生えている。 このコマンド実行から、分かる通り、PHPStormがデバッグ起動時にphpにデバッグオプションを渡して起動している。 さらに言えば、php-cliのCLIのphpのデバッグで使っているのは xdebug である。
グローバル設定のxdebug が有効無効にかからわず、起動時にXdebugを有効にして起動しているのである。
この起動時に「Xdebug」を有効にして起動する。という考え方は ビルトインサーバーやLaravel artisan でサーバー起動するときにも使えるので覚えておくと便利だと思う。
当然だが、xdebugをインストールしていないとデバッグはできないのでエラーになる。(インストールして使用可能が大事なので、有効無効は問わない)
そして、Xdebugのリモートデバッッグではあるのだが、PHPStormのリモートデバッグのリッスンは内部的に自動で行われるらしく おもしろいことに、デバッグ中でもリッスンのアイコンはDisconnectedのママである。
また、デバッグ中にnc でコネクションを張ろうと思っても、refuseされた。WSLのポートの取り扱いのせいかもしれない。