やりたいこと
CakePHP4で開発しているWebアプリケーションをステップ実行したい。
環境
- MacBookPro(macOSCatalina10.15.5)
- PHPStorm2020.2
- docker desktop2.2.0.3
- cakephp4.1.2
設定
Docker関連
php:7.4-apacheのイメージにphp.iniが配置されていないのでローカルで作ってdocker-composeでマウントする。
[xdebug]
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.remote_autostart=1
; host.docker.internalはdockerのhostマシンのIPを解決
xdebug.remote_host=host.docker.internal
; デフォルトは9000だが参考がどちらも9001だったので。
xdebug.remote_port=9001
作ったphp.iniをマウントする。
./Docker/php/php.ini:/usr/local/etc/php/php.ini
の部分を元々のファイルに追記。
version: '3'
services:
web:
container_name: xxx
build:
context: .
dockerfile: ./Docker/php/Dockerfile
volumes:
- .:/var/www/html:cached
- ./Docker/php/php.ini:/usr/local/etc/php/php.ini
environment:
- APP_DEFAULT_LOCALE=ja_JP
- APP_DEFAULT_TIMEZONE=Asia/Tokyo
- DATABASE_HOST=xxx
- DATABASE_USER=xxx
- DATABASE_PASS=xxx
- DATABASE_NAME=xxx
- DATABASE_TEST_URL=xxx
command: bash -c "sh docker-init-setup.sh && apache2-foreground"
ports:
- '5001:80'
Dockerfileにxdebugのインストールを追記。
RUN pecl install xdebug \ && docker-php-ext-enable xdebug
の部分。
peclって何?となる方はこちらを参考
FROM php:7.4-apache
ENV APACHE_DOCUMENT_ROOT /var/www/html/app/webroot
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
&& sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \
&& a2enmod rewrite
RUN apt-get update && apt-get install -y \
libicu-dev \
zip \
unzip \
&& docker-php-ext-install -j$(nproc) intl \
&& docker-php-ext-install -j$(nproc) pdo_mysql
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
COPY . /var/www/html
ENV COMPOSER_ALLOW_SUPERUSER 1
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN cd ./app && \
composer install --no-dev -o
上記を設定後に、以下を実行してxdebugを設定したコンテナを起動する。
docker-compose down
docker-compose up -d
PHPStrom
Preferences>Languages&Frameworks>PHP>Debug
のポートを変更する。
Preferences>Languages&Frameworks>PHP>Servers
を以下の設定にする。
Nameとhostは適当に。ローカルのappディレクトリとDocker上のappディレクトリをマッピングしている。
edit configurations
から以下の設定を追加する。
動作確認
適当なところにデバッグポインタを設定する。(行番号あたりをクリック)
通常通りのURLにブラウザでアクセスするとPHPStormの該当の箇所が選択された最前面に出てくる。(xdebug.file_link_format = phpstorm://open?%f@%l
が必要かなと思ったけどなくて良さそう。)
参考
以下でxdebugについて学んだ。
https://qiita.com/castaneai/items/d5fdf577a348012ed8af
以下でpeclについて学んだ。
http://dqn.sakusakutto.jp/2015/07/php_extension_pecl_phpize.html
以下で具体的な設定方法を学んだ。
https://qiita.com/gigosa/items/90431be7a6a79db78480
https://qiita.com/haruna-nagayoshi/items/99fa041e884c2c3975d2
大変参考になりました。
ありがとうございます。