環境
- windows10
- Laravel 8.x
- PHP 8.x
- VsCode
- gitbash 2.32.0.1
- Xdebug 3
動作イメージ
ブレークポイントを置いたところで、変数の中身が確認できる(var_dumpとかddとか使わなくてもよくなるので開発効率UP)
設定手順
Laravelプロジェクトの作成
laravelプロジェクトの作成までの手順は割愛します。
php.ini
- launch.json(後述)のport番号を合わせる
- xdebugのバージョンにより記載方法が変わるため、詳細はこちらを参照(以下はversion3の書き方)
PHP8になってから、Xdebugも2→3にアップデートされたようです。
/// 割愛
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = "host.docker.internal"
xdebug.client_port = 9012
xdebug.log = "/var/log/xdebug.log"
VsCodeの設定
phpdebugのインストール
VsCodeにインストールします。
https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
launch.jsonの設定
- portはphp.iniのportと合わせる
- pathMappingsは コンテナ内のプロジェクトのパス: ローカルのプロジェクトのパス で指定
.vscode\launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9012,
"pathMappings": {
"/var/www/my-app": "${workspaceFolder}/my-app"
}
}
]
}
docker-compose.ymlの設定
- php.iniとxdebugのログファイルをマウント
docker-compose.yml
version: "3.8"
services:
app-dl:
container_name: app-dl
build: ./docker/php
volumes:
- ./:/var/www
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
- ./log:/var/log
// 割愛
Dockerfileの設定
docker\php\Dockerfile
- dockerコンテナをビルドする際にxdebugをインストールするように追記
RUN apt update \
# xdebugのインストール
&& pecl install xdebug \
&& docker-php-ext-enable xdebug
動作確認
どこでもよいので、デバッグしたい箇所にブレークポイントを置き(赤い丸がつく)、緑の開始ボタンをクリックするとデバッグ開始する
あとは、ブラウザでブレークポイントを設定した箇所の処理が走る画面にアクセスする(今回はindex.phpなので、Laravelトップページで動作確認可能)
以上になります。
まとめ
いかがでしたでしょうか。本記事では、【VsCode】docker環境でPHP Debugを導入する手順について紹介しています。これらを導入することにより、var_dumpとかddなどのデバッグ関数を使うことなく、変数の中身が確認できるようになりますので、ぜひ参考にしてみてください。