やっと動いてくれたので、備忘録用に記事を書きます。
環境
今回はこのような環境で検証を行いました、
windows 10
DockerDesktop 4.3.0
PhpStorm 2020.3.3
Xdebug v3.1.2
Laravel
- php7.4
- Apache/2.4.52 (Debian)
Xdebugインストール
Dockerfileに以下を記載して、Dockerコンテナを作る際にXdebugインストールします。
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
Xdebugを有効にする
php.iniに以下を追加します。
[xdebug]
xdebug.mode = develop,coverage,debug,gcstats,profile,trace
xdebug.start_with_request = yes
xdebug.log="/tmp/xdebug.log"
xdebug.client_port=9001
xdebug.client_host=host.docker.internal
xdebug.idekey=phpstorm
Dockerコンテナを起動
上記の設定が終わったら、Dockerコンテナを起動します。
$ docker-compose up -d
PhpStorm側の設定
ポート設定
File > Settings > Langueages&Frameworks > PHP > Debugを開き、
XdebugのDebug portをphp.ini
で設定した値を入れます。(今回例だと9001)
servers設定
Name
は任意の名前を入力します。
Host
は任意の名前を入力します。
Port
はphp.ini
で設定した値を入れます。(今回例だと9001)
Debugger
はXdebug
を選択します。
Use path mappings
にチェックを入れます。
Absolute path on the server
には、Docker内にソースを配置しているPathを入力します。
私の場合だとホスト側のsrcディレクトリ内をDocker側の/var/www/htmlに同期させているので、/var/www/html
になります
Edit Configurationsの設定
PhpStormの右上にあるリストボックスから「Edit Configurations」を開きます
左上にある「+」ボタンを押して、PHP Remote Debug
を選びます。
右側の設定値を入力します。
Name
は任意の名前を入力します。
Server
は上記のservers設定
で作ったものを指定します。(今回の場合だとdocker-debug
)
IDE key
はphp.ini
で設定した値を入力します。(今回の場合だとphpstorm
)
デバッグ準備
PhpStormの右上にある虫のアイコンをクリックします。(アイコンの右下に黄色のポッチがあるとONの状態です)
ブレイクポイント設定
あとは止めたい処理のところで、行番号の横の空白をクリックして●をつけてブレイクポイントを設定します。
サイトにアクセス
以上となります。