PHPの開発において、デバッグのためにxdebugをインストールしたいと思うことがあります。 加えて、docker環境で開発するためのxdebugインストール設定をdocker-compose・doc…
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
コメントを書く