Help us understand the problem. What is going on with this article?

Dockerで構築したLaravel環境に、VSCodeでステップ実行デバッグを仕掛ける

元記事 Dockerで構築したLaravel環境に、PHPStormでステップ実行デバッグを仕掛ける
← 元元記事 最強のLaravel開発環境をDockerを使って構築する【新編集版】

目的

Dockerで構築したLaravel環境で実行されているPHPコードに対して、
Microsoft製の「VSCode」からステップ実行デバッグができるようにしたい。

概要

PHP定番デバッグツール xdebug を使用して実現していきます。
元記事でサーバサイド側の設定まで設定済みであることが前提。
本記事ではクライアント側であるVSCodeの設定のみ記載します。
(元記事、元元記事共に大変参考になりました。感謝。。)

環境

  • 冒頭に書いた元記事および元元記事の手順でLaravel環境を構築済であること。
  • VSCode最新版を使って開発している方。(Mac版で動作確認済。)

方法

クライアント側作業(お手元のMac)

VSCodeを起動する。

PHP Debugをインストールしていない場合は PHP Debug - Visual Studio Marketplace をインストールしておく

VSCodeでdocker-laravel プロジェクトを開く。

image.png

メインメニューからデバッガ設定画面を開く。

(設定ファイルがない場合は初回設定の際に作成されます。)
image.png

launch.jsonを作成後、以下の設定を貼り付ける

  • portはサーバ側で設定した値と同じになるようにする
  • pathMappings
    • サーバ側のアプリケーション配置場所:"/work/backend"
    • クライアント側のアプリケーション配置場所:"${workspaceRoot}/backend"
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/work/backend": "${workspaceRoot}/backend"
            }
        }
    ]
}

.vscode/launch.jsonが下記画像のように作成されていればOK
* ドキュメントルートがDocker-backendの下に

image.png

ブレークポイントの設定

  • 一時停止した時の挙動が確認ができるように、変数に文字をセットするようコードを修正。
-- Web.php
<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    $hoge = 'welcome';
    return view($hoge);
});
  • Web.phpにブレークポイントをセット
    image.png

デバッグ開始

image.png

ブラウザでPHPサーバーにアクセスしてみる。

http://localhost/

18行目で処理が一時停止、左側のタブで変数に格納された文字列を確認できる

変数にマウスオーバーしても値を確認できる

image.png

参考リンク

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした