📑

【PHP】VScodeでXdebugを使ってデバッグする

2021/05/04に公開

環境

  • PHP 8.0.2
  • MySQL 8.0
  • Docker 20.10.0
  • Xdebug 3.0.4

下準備

下記をインストールする。

  • Visual Studio Code(以下、VSCode)
  • PHP Debug(VSCodeの拡張機能)

Docker

Dockerで環境構築していく。

ディレクトリ構造

├── docker
│   ├── app
│   │   ├── Dockerfile
│   │   └── php.ini
│   └── db
│       └── my.cnf
├── docker-compose.yml
└── src
    └── index.php

Dockerfile

Dockerfile
FROM php:8.0.2-apache

RUN apt-get update && apt-get install -y \
    git \
    unzip \
    vim

# xdebug インストール
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

php.ini

php.ini
[xdebug]
; リモートデバッグ有効化
xdebug.mode=debug
; リモートデバッグの自動開始
xdebug.start_with_request=yes
; ホスト指定
xdebug.client_host=host.docker.internal
; ホスト側のポート指定
xdebug.client_port=9003

php.ini

my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

docker-compoes.yml

docker-compose.yml
version: '3'

services:
    app:
        build: ./docker/app
        ports:
            - '8080:80'
        volumes:
            - ./src:/var/www/html
            - ./docker/app/php.ini:/usr/local/etc/php/php.ini
    db:
        image: mysql:8.0
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: php_db
            MYSQL_USER: php_user
            MYSQL_PASSWORD: php_pass
            TZ: 'Asia/Tokyo'
        volumes:
        - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
        ports:
        - 3306:3306

VSCodeの設定

1. launch.jsonを作る


2. launch.jsonを編集する

編集前

囲った部分を下記に変更する

launch.json
"configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9003, // php.iniで設定したポート番号
            "pathMappings": {
                // Dockerのドキュメントルート:ローカルのドキュメントルート
                "/var/www/html/": "${workspaceRoot}/src"
            }
        },

3. Xdebugを起動する

4. デバッグする

Discussion