Xdebugを利用して、PhpStormでボタンをポチポチしてステップ実行したいけど、
なぜか止まらん!!!という際は、
冷静になって、以下の設定項目を確認しましょう。
でXdebug
が有効になっているかの確認をしましょう。
コンテナ環境の場合はコンテナ内のphpで確認するように!
2020年11月頃から、Xdebug3系がインストールされるようになってきているので、
2系の設定では3系のXdebugでは動きません。
例えば、Docker環境の場合は、以下のように3系の設定にしましょう。
Preferences > PHP > Debug
で設定を確認できます。
Xdebugの設定と合わせるようにしましょう。
デフォルトはdevelopなので、php.ini等に設定を記載する必要があります。
CLI Interpreterを設定しないと、PhpStormのXdebugは正しく動きません。
Preferences > PHP より、CLI Interpreterを正しく設定しましょう。
localのPHPとリモートのPHP(DockerやVagrant)では若干設定方法が異なってくるので注意です。
参考
https://pleiades.io/help/phpstorm/configuring-local-interpreter.html > https://pleiades.io/help/phpstorm/configuring-remote-interpreters.html
割とハマリポイントですが、
リモートのCLI Interpreter の場合、Path Mappingの設定が必要です。
Local PathとRemote Pathが共に設定されているか確認しましょう。
設定例(Laravelのプロジェクトが置かれている絶対パスを記載する)
Preferences > PHP > Test Frameworks
が設定されていないと、phpunit実行時に影響があります。
CLI InterpreterやPath mappingを正しく設定しておきましょう。
最後に、PHPがDocker環境の場合に、
PhpStormでphpunitを実行したときにXdebugが効かないといった場合の対処法です。
リッスンしている状態で、PhpStormのrunボタンを押し、phpunitを実行すると以下のエラーが出ます。
To fix it set server name by environment variable PHP_IDE_CONFIG and restart debug session.
この場合は、直接的な問題解決法ではありませんが、リッスンを解除し、runボタンではなくDebugボタン(虫マーク )を押して実行するとうまくいきます。
このデバックボタンを押すと、リモート環境(Docker環境)に入った上でphpunitコマンドをいい感じに実行してくれるようです。
以上の対処法で9割は解決できると思います。
それでも解決しない場合は、実行ログを見てみると良いかもです。。