技術

[docker][PHP]Laravelでステップ実行してみる

こんにちわ、どばきちです。

前回はdockerでLaravelの開発環境を用意するテンプレをご紹介させて頂きました。

今回はその環境とVSCodeを使ってステップ実行できるようにしてみたいと思います!

あると何かと便利ですしね。

完成イメージ

11行目にブレイクポイントを張って、13行目にステップ実行した時のスクショです。

左上の「変数」の領域では、変数の確認や、値の差替えができます。その他にも、コールスタック、ブレイクポイントを張った場所など所謂ステップ実行する際に他の言語のIDEでも見たことがありそうなのがあります。

必要なもの

  • VSCode(ステップ実行を実際にする環境)
  • PHP Debug(VSCodeの拡張機能)
  • Xdebug v3(dockerコンテナ上で動作してステップ実行機能を提供する)

ステップ実行導入手順

1.アプリケーションサーバにxdebugのインストール

設定ファイルの用意

前回のテンプレだと以下の様な構成でした。

この中のphpコンテナに対してxdebugをインストールします。

具体的には、以下にあるDockerfile、xdebug.iniが編集対象になります。

~/develop/jasmine/docker main*
❯ tree
.
├── laravel-app.drawio
├── nginx
│   └── default.conf
└── php
    ├── Dockerfile   xdebugのインストールについてはここに書く
    ├── php.ini
    └── xdebug.ini   xdebugの設定はこちらに書く(php.iniに書いても良いのだとは思う

2 directories, 5 files

Dockerfileは以下を追加してxdebugをインストールする様にします。

RUN pecl install xdebug \
   && docker-php-ext-enable xdebug

# xdebug.iniの内容についてはすぐ下を参照してみてください
COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

xdebug.iniにはXdebugの設定を記載します。v3系で利用することを想定しています。

(v2系だと設定方法がだいぶ変わる様なので気をつけてくださいませ)

# ステップ実行をする場合には「debug」を設定
xdebug.mode = debug
# dockerコンテナから到達可能なクライアントマシンのIPアドレス
# host.docker.internalはコンテナから見た時のホストのIPアドレスに対する内部ドメイン
xdebug.client_host = host.docker.internal
# PHPリクエストが開始されて、PHPのコードが実行される前に実行したい時にyes
xdebug.start_with_request = yes
# defaultも9003。変更する場合は、vscodeの設定ファイルの方も同様に変更が必要。
xdebug.client_port = 9003
# ログの出力設定。xdebugがIDEに接続しようとする全ての試みが保存される。絶対パスで指定する。
xdebug.log = /var/log/xdebug.log

xdebugの各設定項目については以下に掲載されているので詳細はこちらをご確認ください。

https://xdebug.org/docs/all_settings

設定ファイルの適用

設定ファイルを適用するためにdockerイメージを再作成します。

docker-compose build --no-cache

dockerを起動

docker-compose up -d

xdebugのインストール確認

phpコンテナに適用されたかを確認します。

❯ docker-compose exec php bash
root@c62a70eba647:/var/www/html# php -m | grep xdebug
xdebug
root@c62a70eba647:/var/www/html# php -v
PHP 8.0.18 (cli) (built: Apr 20 2022 16:36:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.18, Copyright (c) Zend Technologies
    with Xdebug v3.1.4, Copyright (c) 2002-2022, by Derick Rethans

xdebugがモジュールとして認識され、v3.1.4が使われていることが確認できます。

サーバー側の設定はここまで確認できたらOKです。

VSCodeに拡張機能の追加

VSCodeの拡張機能で以下の「PHP Debug」なるものがあるので追加します。

PHP Debugの設定追加

VSCodeのサイドバー(そう呼ぶことを今知りました。。)に以下の様なアイコンが追加されていると思うので、こちらを選択するとjsonを作成するボタンがどこかにあったと思います。(完全にここの記憶がないです、、ごめんなさい。ただそんなに複雑なものではなかったと思います。

jsonファイル(設定ファイル)を作成できたということで次に進ませてください。。

そのjsonファイルはある程度テンプレで出来上がっているので必要な箇所だけ修正します。

具体的には以下の箇所になります。

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,        // ここのポートはサーバー側と合わせる必要あり!
            "pathMappings": {
                // Dockerコンテナのdocument root : 開発環境のdocument root
		// 開発環境のdocument rootは環境に合わせて修正してください
                "/var/www/html":"[自分自身のローカル環境のパス]/develop/jasmine" 
            }

使ってみる!

コードにブレイクポイントを設定できる様になってると思うので、ブレイクポイントを設定します。

VSCodeの画面右上にこのボタンがあると思うのでそれを押下すると、ステップ実行ができる様になります!

で、該当のPHPコードが実行されるWebアクセスをすると、冒頭の画像の様な結果になります。

改めてになりますが、こちらです!

おわりに

なんか気付けばめっちゃ長くなってました。。

ここまで読んで頂けた方はもしかしたらいないかも知れませんが、もしいたとしたら本当にありがとうございます!

割と最近Javaにはステップ実行があるのを知っていたけど、PHPにはないと思っていたという方がいたこともあり、自分の中の整理も兼ねて書いてみようと思いました。何かしら参考になる方が一人でもいたらいいなと思います。

それでは、また!

[docker][PHP]Laravel開発テンプレを作ってみた前のページ

Mr.Children 「生きろ」次のページ

関連記事

  1. 技術

    CLI環境からSlackに通知する

    こんにちわ、どばきちです。今回は前回の記事の続きです…

  2. 技術

    HHKBでMacにログインできるようになった!

    こんにちわ、どばきちです。普段僕はHappy Hac…

  3. フリーランス

    iPhoneの領収書整理を自動化してみた話

    こんにちわ、どばきちです。フリーランスになってからと…

  4. WordPress開発・運用

    WordPressテーマ開発環境を準備する

    こんにちわ前回はWordPressのローカル開発環境を構築す…

  5. 技術

    ドメイン移管でwhoisのネームサーバー変更は必須だった

    こんにちわ先日ドメイン移管をしたんですよ。ネームサーバーも変…

  6. 技術

    2024年秋 プロジェクトマネージャー試験受験するど!

    こんにちわIT系のお仕事をされている方は知っている方も多いか…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2024年7月
1234567
891011121314
15161718192021
22232425262728
293031  
  1. フリーランス

    開業しました!
  2. フリーランス

    インボイスの登録申請。。気をつけて!
  3. 雑談

    ただの雑談
  4. フリーランス

    フリーランス1年目振り返り
  5. フリーランス

    小規模企業共済を申し込んでみた
PAGE TOP