Quantcast
Channel: PHP8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 521

IntelliJ IDEA / PhpStormとdockerのPHPでブレークポイントを使ってデバッグする方法

$
0
0
xdebug php.iniの設定例。 ; 以下の設定だと、IntelliJのRUNではxdebug.modeの設定が無しで実行されるのでmode=developとして実行され、 ; DEBUGではIntelliJ側でxdebug.mode=debugが設定されて実行されるのでブレークポイントが働くようになります xdebug.mode=develop xdebug.start_with_request=yes xdebug.client_host=host.docker.internal xdebug.client_port=9003 xdebug.log=/var/log/php/xdebug.log 上記はPHP8 xdebug3の設定です。 ※PHP7xdebug2だと設定キーと値が異なります Dockerの設定追加 Virtual machine pathとLocal Pathの対応が一致するように、Path mappingsも設定しましょう。例えばDockerの/var/www/abc.phpが、ホストの/Users/xxx/src/abc.phpと一致させるような設定です。 PHP CLI Interpreterの設定追加 PHP Remote Interpreterのプラグインが必要です。「...」をクリック。 Serverは先ほど追加したDockerを指定。今回はDocker Composeを使っているので、Configuration filesでdocker-compose.ymlを指定。ServiceにはPHPが動作するサービスを指定します。 Runを実行してみる 試しにLaravelのartisanを実行。 artisanの標準出力を確認できればRemote Interpreterの設定は問題ないです。DockerのPHPで実行できてます。 ブレークポイントを設定して、Debugを実行しても止まらない Start Listening for PHP Debug ConnectionsでListening状態にします。緑色になっていればOK。 artisanの最初の行でブレークポイントを設定して、Debugを実行してみます。 しかし、ブレークポイントで停止せず、以下のエラーが表示されました。 Connection was not established. Probably 'xdebug.remote_host=host.docker.internal' is incorrect. Change 'xdebug.remote_host' IntelliJ IDEA側の実行ログを見ても-dxdebug.client_host=host.docker.internalがあるのですが、incorrectと表示されます。 エラーを回避するため、設定を加えます。 デバッグ実行できるよう設定を追加 php実行側の接続先の名称と、IntelliJ IDEA / PhpStormの名称を揃えて、一致させるような設定です。 名称を「laravelproject-php-xdebug-server」とします。 環境変数PHP_IDE_CONFIGの設定 docker composerの設定例です。 version: "3" services: laravelproject-php-xdebug: environment: PHP_IDE_CONFIG: "serverName=laravelproject-php-xdebug-server" IntelliJ IDEA / PhpStormのPHP Serversの設定 Serversに「laravelproject-php-xdebug-server」を追加。path mappingsも設定します。 PHP CLI InterpreterにConfiguration Optionsを追加 以下設定を加えておかないと接続が不安定なので追加します。 -dxdebug.client_port=9003 -dxdebug.client_host=host.docker.internal DEBUG実行時に、xdebug.client_portは9000で勝手にセットされるみたいで9003を別途設定しています。xdebug.client_hostもhost.docker.internalで自動セットされるので不要っぽく見えるのですが、なぜか無いと接続できない時があってその原因がわかってないので、とりあえず追加しています。 改めて、ブレークポイントを設定して、Debugを実行 無事、停止されました。 dockerのbashからデバッグ実行する dockerのシェルからデバッグを開始したい場合。 # -dxdebug.mode=debugを追加してphpを実行 $ PHP_IDE_CONFIG=serverName=laravelproject-php-xdebug-server php -dxdebug.mode=debug artisan php.iniでxdebug.mode=developにしているため、debugを指定しました。 IntelliJ IDEA / PhpStormからPHPUnitをデバッグ実行する Test Frameworksを追加します。Test RunnerのDefault configuration fileは、virtual側のパスでphpunit.xmlを指定します。 PHPUnitのTestファイル開いて、「>>」の「Debug〜」からDEBUGを実行します。 ブレークポイントも動作しています。

Viewing all articles
Browse latest Browse all 521

Trending Articles