CodeIgniterの環境構築方法:xdebugの導入

スポンサーリンク
CodeIgniterの環境構築方法:xdebugの導入 ノウハウ
CodeIgniterの環境構築方法:xdebugの導入
この記事は約7分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、docker で環境構築した CodeIgniter に xdebug を追加する方法についてご紹介します。

スポンサーリンク

前提条件

この記事では、Dockerでの環境構築が完了していることを前提にしています。環境構築の方法については、下記の記事を参考にお願いします。

修正内容

docker-compose.yml

docker-compose.ymlを下記のように修正します。赤字が修正箇所です。

version: '3'

services:
  app:
    build: .
    container_name: amzn-linux-2-app
    platform: linux/x86_64
    privileged: true
    volumes:
      - ./CodeIgniter-3.1.13/application:/var/www/application
      - ./CodeIgniter-3.1.13/system:/var/www/system
      - ./index.php:/var/www/html/index.php
      - ./info.php:/var/www/html/info.php
      - ./.htaccess:/var/www/html/.htaccess
      - ./httpd.conf:/etc/httpd/conf/httpd.conf
      - ./xhprof-html.conf:/etc/httpd/conf.modules.d/xhprof-html.conf
      - ./xdebug.ini:/etc/opt/remi/php74/php.d/xdebug.ini
    ports:
      - 8080:80

Dockerfile

Dockerfileを下記のように修正します。赤字が修正箇所です。

FROM amazonlinux:2

# amazon-linux-extras install
RUN amazon-linux-extras install -y epel

# yum update & install
RUN yum update -y \
 && yum install -y \
        systemd \
        httpd \
        wget \
        git \
        graphviz

# PHP
RUN yum install -y 'http://rpms.famillecollet.com/enterprise/remi-release-7.rpm'
RUN yum install -y php74
RUN yum install -y php74-php
RUN yum install -y php74-php-fpm
RUN yum install -y php74-php-pear
RUN yum install -y php74-php-devel
RUN ln -s /usr/bin/php74 /usr/bin/php \
 && ln -s /opt/remi/php74/root/usr/bin/phpize     /usr/bin/phpize \
 && ln -s /opt/remi/php74/root/usr/bin/php-config /usr/bin/php-config \
 && ln -s /opt/remi/php74/root/usr/bin/pecl /usr/bin/pecl

# xhprof
RUN cd /tmp \
 && git clone https://github.com/tideways/php-xhprof-extension \
 && cd /tmp/php-xhprof-extension \
 && phpize \
 && ./configure \
 && make \
 && make test \
 && make install

RUN mkdir -vp /var/log/xhprof \
 && chmod 777 /var/log/xhprof

RUN echo 'extension=tideways_xhprof.so'    >> /etc/opt/remi/php74/php.d/tideways.ini \
 && echo 'tideways.auto_prepend_library=0' >> /etc/opt/remi/php74/php.d/tideways.ini

RUN cd /var/www/ \
 && git clone https://github.com/sters/xhprof-html.git ./xhprof-html \
 && cd ./xhprof-html \
 && sed -i "81c\$xhprof_runs_impl = new XHProfRuns_Default('\/var\/log\/xhprof');" callgraph.php

# xdebug
RUN pecl install xdebug-3.1.6

# httpd
RUN echo "Mutex posixsem" >> /etc/httpd/conf/httpd.conf
RUN systemctl enable httpd

# init
CMD ["/sbin/init"]

xdebug.ini

xdebug.iniを下記の内容で新規作成します。

zend_extension=xdebug

# for XDebug3
[xdebug]
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.mode=debug

#xdebug.idekey = PHPSTORM
xdebug.start_with_request=yes

xdebug.iniを下記のパスになるように配置します。

./app/xdebug.ini

ビルド&起動

docker compose build
docker compose up -d

VS Codeにプラグインをインストール

下記のプラグインをインストールします。

動作確認

解説

xdebugとは

xdebugは、PHPのデバッグをサポートするオープンソースの拡張機能です。以下に、xdebugに関する情報をいくつか紹介します。

  1. xdebugは、変数の値や関数の呼び出し履歴など、デバッグに必要な情報を提供する機能を持っています。これにより、PHPスクリプトの実行中にエラーやバグが発生した場合、問題を特定して修正することができます。
  2. xdebugは、PHPスクリプトの実行を停止してデバッグするための機能も提供しています。ブレークポイントを設定したり、ステップ実行したりすることができます。
  3. xdebugは、PHPスクリプトのパフォーマンスプロファイリングにも使用することができます。これにより、スクリプトのどの部分が遅いのかを特定し、最適化することができます。
  4. xdebugは、PHPのPHPUnitやBehatなどのテストフレームワークとも統合されており、テスト中にデバッグを行うこともできます。

詳細については、xdebugの公式ドキュメントを参照してください。

おわりに

今日は、docker で環境構築した CodeIgniter に xdebug を追加する方法についてご紹介しました。PHPのバグ取りに是非使ってみてください。

よっしー
よっしー

また明日お会いしましょう!

コメント

タイトルとURLをコピーしました