前提
- Docker
- PHPStorm
- Xdebug3系
参考
流れ
- Docker内にXdebugをインストールする(3系をインストールする)
- Xdebugを有効にする
- PHPStormでRemoteDebugの設定をする(Dockerの内部のファイルとのPathMappingなど)
Dockerの準備
参考にさせていただいたサイト
Dockerfile
FROM php:8.1-fpm-bullseye SHELL ["/bin/bash", "-oeux", "pipefail", "-c"] # timezone environment ENV TZ=UTC \ # locale LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ # composer environment COMPOSER_ALLOW_SUPERUSER=1 \ COMPOSER_HOME=/composer COPY --from=composer:2.1 /usr/bin/composer /usr/bin/composer RUN apt-get update && \ apt-get -y install git libicu-dev libonig-dev libzip-dev unzip locales && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ locale-gen en_US.UTF-8 && \ localedef -f UTF-8 -i en_US en_US.UTF-8 && \ mkdir /var/run/php-fpm && \ docker-php-ext-install intl pdo_mysql zip bcmath && \ composer config -g process-timeout 3600 && \ composer config -g repos.packagist composer https://packagist.org COPY ./infra/docker/8.1/php/php-fpm.d/zzz-www.conf /usr/local/etc/php-fpm.d/zzz-www.conf COPY ./infra/docker/8.1/php/php.ini /usr/local/etc/php/php.ini COPY ./infra/docker/8.1/php/start-container /work/start-container/ COPY ./src/ /work/backend/ WORKDIR /work/backend RUN mkdir -p storage/framework/cache/data && \ mkdir -p storage/framework/app/cache && \ mkdir -p storage/framework/sessions && \ mkdir -p storage/framework/views && \ mkdir -p storage/logs && \ mkdir -p bootstrap/cache && \ chmod -R 777 storage && \ chown -R www-data:www-data /work/backend && \ chmod +x /work/start-container/start-container && \ composer install # install xdebug RUN pecl install xdebug && docker-php-ext-enable xdebug EXPOSE 9000
解説
こちらでXdebugのインストールと有効化をしている
# install xdebug RUN pecl install xdebug && docker-php-ext-enable xdebug
余談
以下のstart-containerというファイルは、laravel sailのスタートアップ時のシェルをほぼ参考にしているが、Dockerコンテナ内と、ホスト側の所有権の解決をしている部分)
所有権のために、Dockerで使用するユーザのIDをあわせている
chmod +x /work/start-container/start-container && \
以下がstart-container
WWWUSER
が設定されている場合にはusermodによってユーザのIDを変更している
#!/usr/bin/env bash if [ ! -z "$WWWUSER" ]; then usermod -u $WWWUSER www-data fi php-fpm
php.iniの準備
php.iniに以下を追記
[xdebug] xdebug.mode=debug xdebug.start_with_request = yes xdebug.client_host = host.docker.internal
最初にxdebug.mode=debug
だけを書いていてハマっていた。
xdebug.client_host = host.docker.internal
が重要と思われる(デバッグ用ホスト)
PHPStormの設定
まずはDockerコンテナを起動冴えておく(上記のアプリケーション用のDockerコンテナ)
画面のように、PHPのバージョン、Dockerコンテナなどを設定する コンテナとのPath Mappingが重要(Xdebugでブレークポイントとまらないケースはこのあたり確認)
参考
CLI Interpreter
こちらも同様に設定する
このようにXDebugがコンテナ内で有効になっている場合にはXDebugのバージョンが表示される(表示されない場合にはXDebugが有効になっていないことになる)
XDebugの設定
ポートを注意する(XDebug3系から9003に変更されたらしい)
Run/Debug Configurationsの設定
このように、デバッグ対象のサーバを選ぶ(チェックボックスを一回いれてサーバを選択し、またチェック解除)
ブラウザのデバッグ
このあたり参考に