前回、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');
}
}
デバッグする
拡張機能をインストール
デバッグ設定
- デバッグするLaravelプロジェクトを開きます
- 左メニューの好きな所を右クリックします
-
実行をクリックします
- launch.json ファイルを作成しますをクリックします
-
PHPをクリックします
- Laravelプロジェクトに追加されます
-
launch.jsonを編集します
- 赤枠を下記に変更します。
{
"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.」対応
ページアクセスすると、下記の例外に引っ掛かるかも知れません。
対応方法
- F12もしくは右クリック→「検証」で、デベロッパーツールを開きます。
- Applicationタブ→左側リストの「Cookies」→該当URLを選択すると、右側にリストが表示されます。
- 右側リストの「Name」を「app/Http/Middleware/EncryptCookies.php」ファイルに追加します。
再度ページアクセスすると、ブレークポイント置いた箇所に止まります。
※参考
【Laravel6】Xdebug実行で”The payload is invalid”と出る場合の対処方法(pgAdminを使用している場合)