🌟

xdebug3+vscode+MAMPでPHPのデバック環境を構築したい!(Mac)

2023/01/17に公開

先日PHPのデバックが快適になるxdebugというものを知りました。
この環境が構築できると、vscode上からブレイクポイントを設定してプログラムの処理を途中で止めたりして確認が出来るようになります。
様々な記事を参考にさせて頂き構築しましたが、うまくいかず・・最終的には構築までいけたので誰かの参考になればと思い記事を書こうと思いました。

ゴール

vscode+mampでPHPのデバック環境を構築して、プログラムの流れを追いたい。

環境情報
・ 環境作成日 2023/01/17
・ MacBookPro 2020年モデル(CPUはIntel)
・ MAMP version6.7
・ xdebug version3.1.6
注意事項
・ xdebugはversion2系と3系で設定が違うので注意してください。
・ MAMPの基本操作については説明しません。
・ Dockerを使う場合はまた設定が違います。

1.MAMPでテスト用のディレクトリの作成

MAMP/htdocs/ディレクトリ配下にtestディレクトリを作成(テスト用)します。
このディレクトリ内で、PHPのデバック環境を作ってテストを行います。

2.vscodeでindex.phpを作成してPHP情報を確認する

vscodeでdebug-test/ディレクトリを開き、vscodeでtest/ディレクトリ配下にindex.phpを作成して、下記を記述します

<?php
phpinfo()

3.MAMPのサーバーを起動して、localhostにアクセスする

MAMP → Startボタンを起動 → localhost
※私の場合はMAMPデフォルトの設定でportが8888なのでlocalhost:8888へアクセスします。
先程作成したtest/index.phpへアクセスします。

4.xdebugが有効化されているか確認する

localhostで、debug-test/index.phpを開きxdebugが有効化されているか確認します。
xdebugで文字の検索を掛けてヒットがなければ有効化されていません。

5.php.iniでxdebugを有効化する

手順4の画面phpinfo()でPHPのversionが表示されているので、現在MAMPでどのPHPのversionを使っているか確認します。
※ PHPのversionによって設定ファイルの場所が違います。私の場合はPHP8.1.13

設定ファイルのphp.iniに下記を追加する
MAMP/bin/php/php〇〇/conf/php.ini
〇〇は先程確認したphpのversionになります。

私の場合は
MAMP/bin/php/php8.1.3/conf/php.ini
下記のコメントアウトを外します。

[xdebug]
; zend_extension="/Applications/MAMP/bin/php/php8.1.13/lib/php/extensions/no-debug-non-zts-20210902/xdebug.so"
;   xdebug.mode=debug
;   xdebug.start_with_request=yes
[xdebug]
zend_extension="/Applications/MAMP/bin/php/php8.1.13/lib/php/extensions/no-debug-non-zts-20210902/xdebug.so"
  xdebug.mode=debug
  xdebug.start_with_request=yes

zend_extensionに記述してあるバスにxdebug.soファイルがあるか確認します。ない場合はxdebugのwizardから作成してくる必要があります。MAMPだとデフォルトで確認できました。

6.xdebugが有効かされたか確認する

MAMPサーバーを再起動します(設定ファイルを変更したため)
再度、ローカルホストへアクセスしてphpinfoの確認をします。xdebugで検索を掛けて項目が確認できればOKです。

7.vscodeへ拡張機能PHP debugをインストールする

私の環境では既にインストールされています。

8.vscodeでデバック用の設定ファイルlaunch.jsonを作成する

左側のバー(メニュー)実行とデバックから、launch.jsonファイルを作成します。をクリックしてファイルを作成します。

下記のようなファイルが作成できればOKです。launch.json

9.launch.jsonファイルにstopOnEntryを追記する

"version": "0.2.0",
	"configurations": [
		{
			"name": "Listen for Xdebug",
			"type": "php",
			"request": "launch",
			"port": 9003,
			// 追記
			"stopOnEntry": true
		},

10.ローカル環境でデバックのテストを行う

vscodeの左側のバー(メニュー)実行とデバックの上部の三角アイコンをクリックしてデバックを開始します。

サンプルファイルの編集(手順2で作成したindex.php)

<?php
// phpinfo();

$hoge = 'hoge';

if ($hoge) {
  echo 'hogehoge';
}

試しに$hoge = 'hoge';の箇所にブレイクポイントを設定してブラウザで確認してみます

11.vscode上からPHPデバックが出来るようになる

ブラウザでローディング中になり、vscope上からプログラムの動作確認が出来るようになります。
私の環境ではこの手順でデバックが出来るようなりました。デバック環境構築の参考になれば幸いです。
ご覧いただきありがとうございました。

追記

launch.jsonに"stopOnEntry": trueを記述するとブレイクポイントを設定しても最初のプログラムで止まってしまう

この場合は、stopOnEntry:trueをコメントアウトか削除してみて動作を確かめてみてください。

Discussion