0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(備忘録)vscodeとdockerでphpのxdebugをする(mac)

Last updated at Posted at 2025-01-12

phpのデバッグをすることがあり、自分の環境とぴったりの記事が見つからなかったので何番煎じか分かりませんが残しておきます。

環境

vscode
macOS: 15.2
Docker: 27.4.0
php: 7.4

phpアプリはdocker コンテナ内で動いています

手順

コンテナ作成時

コンテナ側へのコピー用にxdebug.iniを作成

./xdebug.ini
xdebug.client_host = host.docker.internal # mac以外だと変わるかも
xdebug.start_with_request = yes
xdebug.mode = debug
xdebug.client_port = 9003 # ここはlaunch.json(後述)のポートと合わせる
xdebug.log = /var/log/xdebug.log

Dockerfileに以下を追記

COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

# xdebugのバージョンはhttps://xdebug.org/docs/compatで確認
RUN pecl install xdebug-3.1.6 && docker-php-ext-enable xdebug

(確認)

コンテナ立ち上げ後にコンテナ内で以下を確認します

# xdebug.iniが認識されていることを確認
$ php --ini

# (略)
/usr/local/etc/php/conf.d/xdebug.ini
# xdebugが実行されているかを確認(with Xdebugがあるかどうか)
$ php --version

PHP 7.4.3 (cli) (built: Feb 26 2020 12:03:25) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v3.1.6, Copyright (c) 2002-2022, by Derick Rethans

デバッグ方法

launch.json

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                # コンテナ側とホスト側のソースファイルのパスが一致するようにします。
                "/var/www/html/src": "./src"
            },
            "log": true
        }
    ]
}

vscodeのデバッグ機能で"Listen for Xdebug"を実行しておきます。
あとはホスト側のvscodeでブレークポイントを設定するだけです。
複数のコンテナを動かしている場合はそれぞれポート番号を変えて並列でデバッグを動かします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?