2
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?

laravel sail でデバッグ実行する

Posted at

laravelプロジェクトで
ブレークポイントをおいてデバッグ実行する方法が
直感的にわからなくて
手順がほしかったときに書いたものです

環境

macOS Sonoma v14.5
docker desktop for mac v4.37.2
vscode

前提

  • コンテナを起動していないこと

コンテナを起動していた場合、コンテナは削除する

# 起動しているコンテナ一覧
docker ps
# コンテナ削除
sail down

デバッグ実行する

1. vscode拡張機能をインストール

2. .vscode/launch.jsonを作成

以下を追加

.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "stopOnEntry": false,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"
            },
        },
    ]
}

2. .envに追加する

.env
+ SAIL_XDEBUG_MODE=debug

3. コンテナを起動する

sail up -d

4. デバッグできることを確認する

テストコードにブレークポイントを置く
行左端をクリックして赤丸が表示されるとブレークポイントが置けた状態です

image.png

テスト実施

sail debug test ./tests/Feature/ExampleTest.php

ブレークポイントで止まります
image.png

補足

  1. .vscode/launch.jsonに記載したpathMappingsをもとにデバッグするため、vscodeで開いているフォルダがlaravelプロジェクト直下(この場合、example-appフォルダ)
    でない場合、ブレークポイントで止まらないです。
    なおターミナル上でフォルダ移動してもブレークポイントが止まらないです

  2. それでもブレークポイントが止まらない場合、
    launch.jsonのpathMappingを変更してみるとうまくいくことがあります

    // 絶対パスを直接入力
                "pathMappings": {
                 // "コンテナ側のパス": "ローカル側のパス"
    +                "/var/www/html": "/your/work/path/to"
                },
    
  3. debugと指定せずに実行するとデバックモードに関係なく、ブレークポイントで止まらず実行されます

    # デバックモードで起動中のコンテナに対してステップ実行せずにテストする
    sail artisan test ./tests/Feature/ExampleTest.php
    

workspaceRoot は非推奨となったようです
https://code.visualstudio.com/docs/editor/variables-reference#_why-isnt-workspaceroot-documented

    "pathMappings": {
        // "コンテナ側のパス": "ローカル側のパス"
+          "/var/www/html": "${workspaceRoot}"
    },
2
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
2
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?