5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studio CodeでLaravelをデバッグする設定【Docker Compose編】

Last updated at Posted at 2021-04-07

前回、Visual Studio CodeでLaravelをデバッグする設定【Vagrant編】を書きましたが、今回はDocker Compose環境でのデバッグ設定です。

マシンスペック

  • Mac mini 2018
  • macOS Catalina(10.15.x)
  • Intel Core-i7 3.2GHz 6コア
  • メモリ 32GB
  • SSD 512GB

Docker環境

  • Nginx 最新版
  • PHP(PHP-FPM) 7.4.x
  • MySQL 8.x
  • Composer 2.x
  • Laravel 8.x
  • Redis 最新版
  • MailHog 最新版

やること

  • Docker Compose環境のVSCodeデバッグ設定

前提

このポート環境を満たしてないと、多分ブレークポイント止まらない。
【コピペ】Docker ComposeでLaravel開発環境を構築その肆#IDEでブレークポイント止める為の準備

Docker環境の準備

【コピペ】Docker ComposeでLaravel開発環境を構築その伍#使い方

デバッグするコードの準備

ブレークポイントを止めなきゃなので、WelcomeページをController経由に修正。

routes/web.phpを編集

routes/web.php
use Illuminate\Support\Facades\Route;
・・・
Route::get('/', function () {
    return view('welcome');
});

↓ 下記に編集。

routes/web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Web\WelcomeController;
・・・
Route::group(['namespace' => 'Web'], function () {
    Route::get('/', [WelcomeController::class, 'index']);
});

WelcomeControllerを作成

app/Http/Controllers/Web/WelcomeController.php
<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;

class WelcomeController extends Controller
{
    public function index()
    {
        return view('welcome');
    }
}

デバッグする

拡張機能をインストール

  • 拡張機能を開きます
  • phpで検索します
  • PHP Debugをインストールします
    スクリーンショット 2020-08-18 1.21.07.png

デバッグ設定

  1. デバッグするLaravelプロジェクトを開きます
  2. 左メニューの好きな所を右クリックします
  3. 実行をクリックします
    スクリーンショット 2020-08-18 1.36.43.png
  4. launch.json ファイルを作成しますをクリックします
  5. PHPをクリックします
    スクリーンショット 2020-08-18 1.45.02.png
  6. Laravelプロジェクトに追加されます
    スクリーンショット 2020-08-18 1.59.10.png
  7. launch.jsonを編集します
    スクリーンショット 2021-04-07 19.32.54.png
  8. 赤枠を下記に変更します。
{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9001,
    "pathMappings": {
        "/home/docker/laravel": "${workspaceRoot}"
    }
},

デバッグ

デバッグ操作は下記を参考にする。
Visual Studio CodeでLaravelをデバッグする設定【Vagrant編】#デバッグ

「Illuminate\Contracts\Encryption\DecryptException: The payload is invalid.」対応

ページアクセスすると、下記の例外に引っ掛かるかも知れません。
スクリーンショット 2021-04-07 17.19.52.png

対応方法
  1. F12もしくは右クリック→「検証」で、デベロッパーツールを開きます。
  2. Applicationタブ→左側リストの「Cookies」→該当URLを選択すると、右側にリストが表示されます。
    スクリーンショット 2021-04-07 17.28.56.png
  3. 右側リストの「Name」を「app/Http/Middleware/EncryptCookies.php」ファイルに追加します。
    スクリーンショット 2021-04-07 17.32.40.png

再度ページアクセスすると、ブレークポイント置いた箇所に止まります。
スクリーンショット 2021-04-07 17.37.05.png

※参考
【Laravel6】Xdebug実行で”The payload is invalid”と出る場合の対処方法(pgAdminを使用している場合)

5
9
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
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?