xdebug3, nginx, docker環境のリモートデバッグ設定

xdebug3, nginx, docker環境のリモートデバッグ設定

xdebugは2020年11月にver3がリリースされた事で、これまで(ver2系統)のリモートデバッグに関する設定項目が変わりました。

xdebug3のリモートデバッグ設定例

php.iniに以下の内容を設定します。

[xdebug]
zend_extension="<path to xdebug extension>"
xdebug.mode=debug
start_with_request=yes
xdebug.log=/tmp/xdebug.log

dockerfileの設定例

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "start_with_request=yes \
    && xdebug.log=/tmp/xdebug.log

dockerをWSL・Linuxで実行している

host.docker.internalはWindows、Macでは利用可能ですが、Linuxでは対応していないので使用できません。
Windows上のWSLで実行している場合もLinux上で動いているので使用できません。
代わりに、ホストのプライベートIPを指定します。

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.client_host=192.168.0.1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "start_with_request=yes \
    && xdebug.log=/tmp/xdebug.log
autostartやログの出力等、不要なものは除外して下さい。

ポートの設定をする場合

デフォルトポートが以前は9000番でしたが、9003に変更されました。

xdebug.client_port=9003

自動起動

xdebugはパラメータやCoockieに特定の値がある場合のみ起動し、xdebug2では常に実行する場合はxdebug.remote_autostartをセットしていました。
この設定値も変更され、代わりに以下のようにセットします。

start_with_request=yes

エラーログ

トラブルシューティングに必須なエラーログの設定値もxdebug.remote_logから以下に変更されました。

xdebug.log=/tmp/xdebug.log

プログラミングカテゴリの最新記事