LoginSignup
0
0

More than 1 year has passed since last update.

docker+php5系でxdebugを使う方法

Posted at

はじめに

仕事でphp5.5の環境構築をすることになったのですが、xdebugが動作しませんでした。
解決するのに結構嵌ってしまったので、対処法を残します。

環境

  • VSCode
  • Docker
  • php5.5
  • mysql5.7

結論

xdebug3を使用していたため、動作しませんでした。

xdebug2.6.0からphp5系がサポート対象外になったようです。
http://xdebug.org/announcements/2018-01-29

php5.5を使用する場合はxdebug2.5.5を使用しましょう。

php5.3以前を使用する場合は、xdebug2.2.7をインストールしてください。
xdebug2.3.0からphp5.3以前がサポート対象外のようです。
http://xdebug.org/announcements/2015-02-22

フォルダ構成

├── .vscode
│   └── launch.json
├── docker
│   ├── Dockerfile
│   └── php.ini
├── docker-compose.yml

設置ファイル

docker-compose.yml

version: '3'

services:
  php:
    build: ./docker/php 
    volumes:
      - .:/var/www/html
    ports:
      - 8000:80

  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password
      - MYSQL_DATABASE=mysql

Dockerfile

FROM php:5.5-apache

RUN apt-get update -qq \
  && apt-get install -y \
  && pecl install xdebug-2.5.5 \
  && docker-php-ext-enable xdebug

COPY ./php.ini /usr/local/etc/php/

WORKDIR /work

php.ini

[XDebug]
xdebug.remote_port = 9000
xdebug.remote_host = host.docker.internal
xdebug.idekey = "VSCODE"
xdebug.remote_autostart= 1
xdebug.remote_connect_back = 0
xdebug.remote_enable = 1

xdebug2と3では記述が異なります。
3の記述では動作しないのでお気をつけください。

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "VSCODE",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/var/www/html":"${workspaceRoot}/"
            }
        }
    ]
}
0
0
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
0