よっしー
こんにちは。よっしーです(^^)
今日は、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に関する情報をいくつか紹介します。
- xdebugは、変数の値や関数の呼び出し履歴など、デバッグに必要な情報を提供する機能を持っています。これにより、PHPスクリプトの実行中にエラーやバグが発生した場合、問題を特定して修正することができます。
- xdebugは、PHPスクリプトの実行を停止してデバッグするための機能も提供しています。ブレークポイントを設定したり、ステップ実行したりすることができます。
- xdebugは、PHPスクリプトのパフォーマンスプロファイリングにも使用することができます。これにより、スクリプトのどの部分が遅いのかを特定し、最適化することができます。
- xdebugは、PHPのPHPUnitやBehatなどのテストフレームワークとも統合されており、テスト中にデバッグを行うこともできます。
詳細については、xdebugの公式ドキュメントを参照してください。
おわりに
今日は、docker で環境構築した CodeIgniter に xdebug を追加する方法についてご紹介しました。PHPのバグ取りに是非使ってみてください。
よっしー
また明日お会いしましょう!
コメント