Laravel

Macで Laravel + Docker + PhpStrormでデバッグする

前回の記事からの続きとなります。

今回は「PhpStorm」を使って「Laravel」のデバッグをやるようにします。
Docker」で「Laravel」を起動した状態にしておいてください。

環境

  • Mac Intel Ventura 13.1
  • PHP: v8.1.13
  • Laravel: 9.x
  • Docker: 20.10.22
  • docker-compose: v2.15.1
  • PhpStorm: 2022.3.1

「PhpStorm」をインストールする

まずは公式サイトから「PhpStorm」をダウンロード&インストールします。

https://www.jetbrains.com/ja-jp/phpstorm/download/

「PhpStorm」は有料のIDEですが、コード補完が有能で様々な機能があり開発をする上では金額以上の価値はあると思います。
PHP以外にも、JavaScriptやCSSのコード入力も楽に行えます。

「PhpStorm」でデバッグをする。

デバッグの準備をする

インストールした「PhpStorm」を起動しましょう。
起動したウインドウで「Open」を押しましょう。

PhpStormのプロジェクト選択

開く場所は、「Laravel」をインストールした場所を指定しましょう。

Laravelのプロジェクトを開く

「PhpStorm」を開いた画面の右側のプロジェクト一式にある「public」に「info.php」を作成します。
「info.php」には、以下の内容を記述します。

<?
$i = 1;
echo $i;
phpinfo();

記述後に以下のURLにアクセスしてプログラムが動作しているか確認します。

http://localhost:9081/info.php

以下のような画面が表示されたら成功となります。

info.phpのページ

デバッグの設定

Settingsの設定

「PhpStorm」の上部メニューから以下の順で開きます。
[PhpStorm] -> [Setting…]

設定画面の中にある[PHP] -> [Debug]を開きます。
Xdebug」にあるポートが「9003」が設定されているか確認します。

Debugの設定

Serversの設定

次に[PHP] -> [Servers]を開きます。
+」ボタンで対象のサーバーを追加して以下の設定をおこないます。

  • Name: Docker
  • Host: localhost:9081
  • Port: 80
  • Debugger: Xdebug
  • Use path mapttings: ON

Use path mapttings」が「ON」となった場合に、パスを同期するようにします。
下部にある「Project files」の「File/Directory」と「Absolute path on the server」を設定します。
ここはPC内のプロジェクトのパスと仮想サーバーのパスが一致するようになります。
設定が完了したら「OK」ボタンを押下して、「Setting」ウインドウを閉じます。

Serversの設定

Remoteの設定

次に「PhpStrom」ウインドウの右上にある「Current File」を押下して、「Edit Configurations…」を設定します。

Remoteデバッグの設定

ウインドウを開くと左上にある「+」ボタンを押下して、「PHP Remote Debug」を選択します。
追加された「PHP Remote Debug」の設定は、以下の設定を行う。

  • Name: Docker
  • Filter debug connection by IDE key: ON
  • Server: 上記で追加した「Docker」を選択します。
  • IDE key(session id): 「php.ini」に記載した「xdebug.idekey」の値を設定します。

設定が完了すると「OK」ボタンを押下して閉じます。

PHP Remote Debugの設定

「PhpStorm」ウインドウの右上にある「電話アイコン」をクリックして、デバッグを有効します。
デバッグが有効になると、電波が出るようなアイコンとなります。

リモートデバッグ時

この状態でソースコードの行数をクリックすると、ブレークポイントを設定します。
ブレークポイントを設定した状態でブラウザをクリックすると、デバッグをする事ができます。

ブレークポイントでデバッグ

以上で、「Laravel」でデバッグ環境を構築する事ができました。
これにより変数の値を確認したり、プログラムがどのように動作しているかを確認する事ができます。