【旧バージョン(PHP7系 & PHP5系)対応版】Xdebug + Docker + VSCodeによるデバッグ環境構築

PHP 旧バージョンへのXdebug導入方法

下記リンクの前回の記事で解説しているDocker & VSCode開発環境へのXdebug導入手順を、PHPの旧バージョン7系 & 5系で行う方法ついて補足します。

(PHP 8 + Xdebug)

【PHP 8】Xdebug + Docker + VSCodeによるデバッグ環境構築

とくにPHPバージョン5系で開発された旧システムの改修や調査などでローカル環境を構築する必要がある際に参考にしていただければ幸いです。

なお、VSCodeのXdebug拡張機能の設定やステップ実行の方法などはPHP各バージョンで共通ですので、上記記事の記載内容を参考にしてください。

PHP 7

PHP 7系(7.4と7.3)でのXdebug導入ついて解説します。

必要なソースファイルはすべて以下リポジトリを参照
https://github.com/kenchang198/xdebug-on-docker/tree/7.4

php7.3-apache
php7.4-apache

Dockerfile
PHP 7系ではXdebugバージョン2系(2.9.0)をインストールする必要がありますので、以下のようにDockefileを作成しています。

FROM php:7.4-apache

RUN pecl install xdebug-2.9.0 && \
    docker-php-ext-enable xdebug

上記はPHP 7.4系のdockerイメージを使用していますが、PHP 7.3の場合でもxdebugのバージョン、設定ともに7.4のものと同一で問題ありませんでしたので、
7.3系を再現する場合はDockerイメージの選択を7.4のものから7.3へ変更するだけでOKです。

php.ini
php.iniに記載するXdebugの設定もXdebugバージョン2系に合わせた内容で記載します。

※ Xdebugバージョン3系の方法で記載しても反映されません。

[xdebug]
xdebug.remote_host = host.docker.internal
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port = 9003

PHP 5

バージョン5系の場合はマイナーバージョン毎で、それぞれ対応しているXdebug(2系)のマイナーバージョンや、モジュール本体であるxdebug.soとphp.iniの設置パスなどが異なる点に注意が必要です。

https://github.com/kenchang198/xdebug-on-docker-php5/tree/php56

├── Dockerfile
├── docker-compose.yml
├── html
│   └── index.php
└── php.ini

docker-compose.yml

version: '3.8'
services:
  web:
    build: ./
    volumes:
      - ./html:/var/www/html
    ports:
      - 88:80

php.ini

[xdebug]
xdebug.remote_host = host.docker.internal
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port = 9003

以降、マイナーバージョン毎のDockerfileの差分を記載します。

注意 pecl install xdebugについて補足

PHP 5環境で使用するXdebug 2系がpecl installコマンドでインストールが出来なくっていたため、以降Dockerfile内に記載している、RUN pecl install xdebug~のコマンドの部分は下記の別記事内の記述に置き換えてください。

【PHP 5】Xdebugをpecl installできなくなっていた。

Dockerfile (PHP 5.5用)

PHP 5.5.38 with Xdebug v2.5.5

FROM php:5.5-apache

ADD php.ini /usr/local/etc/php/php.ini

RUN pecl install xdebug-2.5.5

RUN echo -e "\nzend_extension=\"/usr/local/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so\"" >> /usr/local/etc/php/php.ini

RUN service apache2 restart

EXPOSE 80

CMD ["/usr/sbin/apachectl","-DFOREGROUND"]

Dockerfile (PHP 5.4用)

PHP 5.4.45 with Xdebug v2.2.7

FROM php:5.4-apache

ADD php.ini /usr/local/etc/php/php.ini

RUN pecl install xdebug-2.2.7

RUN echo -e "\nzend_extension=\"/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so\"" >> /usr/local/etc/php/php.ini

RUN service apache2 restart

EXPOSE 80

CMD ["/usr/sbin/apachectl","-DFOREGROUND"]

Dockerfile (PHP 5.3用)

PHP 5.3.29 with Xdebug v2.2.7

FROM php:5.3-apache

ADD php.ini /usr/local/lib/php.ini

RUN pecl install xdebug-2.2.7

RUN echo -e "\nzend_extension=\"/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so\"" >> /usr/local/lib/php.ini

RUN service apache2 restart

EXPOSE 80

CMD ["/usr/sbin/apachectl","-DFOREGROUND"]

Follow me!

【旧バージョン(PHP7系 & PHP5系)対応版】Xdebug + Docker + VSCodeによるデバッグ環境構築” に対して1件のコメントがあります。

コメントは受け付けていません。