PHPStormのDockerコンテナを使用した開発でXDebug3を使えるようにするための設定手順です。
Dockerfile
php:7.4-apache
のイメージを利用したDockerfileを作成する。
docker-php-ext-enable xdebug
を実行することで、xdebugが有効化されてコンテナ内にiniファイルが作成される。
FROM php:7.4-apache
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
WORKDIR /var/www
php.ini
XDebugの設定を含めたphp.iniの設定ファイルを設置する。XDebugはversion2と3で設定内容が異なることに注意。(XDebug2の時に使われる設定をコメントアウトした形で記載しておきます)
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[xdebug]
# for XDebug2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_host=host.docker.internal
#xdebug.remote_port=9000
#xdebug.remote_log=/tmp/xdebug.log
# for XDebug3
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003
xdebug.idekey = PHPSTORM
xdebug.mode = debug
確認
コンテナに入って、dockerの中で確認する。
docker-compose exec app bash
バージョンの確認
php --version
PHP 7.4.13 (cli) (built: Dec 11 2020 08:24:16) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Xdebug v3.1.2, Copyright (c) 2002-2021, by Derick Rethans
設定ファイルの場所を確認
php -m | grep Xdebug
Xdebug
php -i | fgrep xdebug.ini
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini,
php -i | fgrep 'Loaded Configuration File'
Loaded Configuration File => /usr/local/etc/php/php.ini
PHPStormで設定
- Preferenceを開く
cmd+,
以下、Preferenceでの設定
-
メニューから選択
PHP > Debug
- ポートがiniファイルの値と同じになっていることを確認 (デフォルトで9000,9003が指定されているはず)
-
メニューから選択
Build,Execution,Deployment > Docker
- "+"をクリック
- Docker for Macにチェックを入れる
- Path mappingsがあっていることを確認する
- Applyする
-
メニューから選択
PHP > Server
- Dockerの定義があることを確認 (...???)
-
メニューから選択
PHP
- CLIインタープリタの横の"..."をクリック
- "+"をクリック
- From Docker
- Docker Composeを選択 (Dockerではない)
- ServerをDockerのサーバを選択する
- serviceをphpが動作しているコンテナ名にする
- PHPとDebuggerのバージョンが合っていることを確認
-
メニューから選択
PHP > Test Frameworks
- "+"をクリックして、"PHPUnit By Remote Interpreter”を選択
- Interpreterを設定したものに指定する
- PHPUnitのバージョンが表示されることを確認
-
メニューから選択
Run -> Edit Configurations
- "+"をクリックして、"PHP Remote Debug”を選択
参考資料
- PhpStorm 2021.3 Debug a PHP CLI script
- PhpStormでDocker環境のXdebug3とPHPUnitを使えるようにする方法
- Shin x Blog: PhpStorm + Docker for Mac(docker-compose)での PHPUnit と Remote Debug の設定
- これはXDebug2向けの設定なので注意が必要!
こちらもおススメ
Dockerfileの定義ではなく、作成済みコンテナで下記のコマンドを実行した場合はうまくいかなかった
--
pecl install xdebug && docker-php-ext-enable xdebug