PhpStorm+DockerでXDebugを使用する
XDebugをDockerコンテナにインストールする
DockerfileにXDebugをインストールするコマンドを追加する。
# xdebug
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
php.iniにXDebug用の設定を追加する
Dockerコンテナにコピーするphp.iniにXDebug用の設定を追加する。
[xdebug]
xdebug.idekey = www-data
xdebug.max_nesting_level = 512
xdebug.remote_enable = On
xdebug.remote_autostart = On
xdebug.remote_host = host.docker.internal
xdebug.remote_port = 9000
Dockerコンテナを起動する
docker-compose up -d
PhpStormの設定を変更する
PhpStormのXDebug設定はプロジェクト毎に保存されるため各プロジェクトで設定が必要になる。
Preferences | Build, Execution, Deployment | Docker
下記は全プロジェクト共通のため一度だけ設定する。
+ボタンをクリックして、Docker実行環境を追加するConnect to Docker daemon with:はDocker for Macを選択する
Preferences | Languages & Frameworks | PHP
PHP language levelで使用しているPHPのバージョンを指定するCLI Interpreterの...をクリックする+ボタンをクリックしてからFrom Docker, Vagrant, VM, WSL, Remote...をクリックするDocker Composeを選択するService:からPHP-FPMが実行されているサービスを選択するOKをクリックするLifecycleのConnect to existing containerを選択するOKをクリックする
PHP Runtimeタブを選択するSync Extensions with InterpreterをクリックするApplyをクリックする
Preferences | Languages & Frameworks | PHP | Debug
Debug portをPHP-FPMの設定で指定したポート番号に合わせるIgnore external connections through unregistered server configurationsをチェックする- 外部からのデバッグ接続がサーバー構成に未登録の構成なら無視する
Break at first lien in PHP scriptsをチェックする(設定に問題ないことが確認できてらチェックを外す)
Preferences | Languages & Frameworks | PHP | Servers
+ボタンをクリックするNameに好きな名前を入れるHostとPortはこのプロジェクトで起動したページにアクセスする時のホスト名とポート番号を入れるUse path mappingsにチェックを入れ、DockerコンテナにマウントされるローカルディレクトリのAbsolute path on the serverにマウント先のパスを入れるApplyをクリックする
Configuration
- 右上
Add Configuration...をクリックする +ボタンをクリックしてからPHP Remote Debugを選択するNameに好きな名前を入れるOKをクリックする
デバッグ実行する
Configurationsから上記で設定したものを選択し、Run > Debugを実行する。