LoginSignup
0
1

More than 3 years have passed since last update.

PHPStrom+CakePHP4+Docker+xdebugでステップ実行環境を構築する

Posted at

やりたいこと

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でマウントする。

/Docker/php/php.ini
[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の部分を元々のファイルに追記。

/docker-compose.yml
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のポートを変更する。
image.png

Preferences>Languages&Frameworks>PHP>Serversを以下の設定にする。
Nameとhostは適当に。ローカルのappディレクトリとDocker上のappディレクトリをマッピングしている。

image.png

edit configurationsから以下の設定を追加する。
image.png

虫ボタンを実行する。
image.png

動作確認

適当なところにデバッグポインタを設定する。(行番号あたりをクリック)
image.png

通常通りの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

大変参考になりました。
ありがとうございます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1