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