Laravel sail によるデバッグ設定

Laravelロゴ

Laravel sail で構築したアプリのPHPデバッグを行う方法です。

設定変更

Xdebugについては標準でVer3系のものがインストールされています。
.ENV ファイルに以下の環境変数をセット

SAIL_XDEBUG_MODE=develop,debug

これでコンテナを再起動すればOKです。

セッション経由でデバッガ起動

ブラウザ経由で動かした場合でデバッグするときは、初めに下記のGETパラメータを付けてアクセスして、デバッグを有効にしましょう

?XDEBUG_SESSION_START=session_name

例えばこんな感じ

http://localhost?XDEBUG_SESSION_START=session_name

セッションが生きている間はデバッグが有効になります。
デバッグモードを止めたい場合は

http://localhost?XDEBUG_SESSION_STOP=session_name

なお、artisan 動かしたCLIのベースのコマンドをデバッグしたい場合には、artisan の代わりに、debugを利用します
例えばunittestを起動する場合はこんな感じ

sail debug test

デバッガの自動起動

Xdebugを常に起動しておく場合は、docker-compose.yml の設定だけではできません。
以下の手順で、DocerファイルやPHP.ini 等の変更が必要です。

sail artisan sail:publish

これで docer というフォルダができ、ここにDockerファイルやphp.ini ファイルが入り、これでビルドするとこちらの設定を使ってDockerがビルドできます。
追加で何かパッケージを入れなければならない時もこの方法を使うとよいですね。

現在のバージョンは標準ではPHP8.1を使っていますので
docker\8.1\php.ini
に以下を追記しましょう。

[xdebug]
xdebug.start_with_request=yes

この状態でフルビルドを行います。

sail build --no-cache
タイトルとURLをコピーしました