xdebug3+vscode+MAMPでPHPのデバック環境を構築したい!(Mac)
先日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で文字の検索を掛けてヒットがなければ有効化されていません。
php.ini
でxdebugを有効化する
5.手順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です。
PHP debug
をインストールする
7.vscodeへ拡張機能私の環境では既にインストールされています。
launch.json
を作成する
8.vscodeでデバック用の設定ファイル左側のバー(メニュー)実行とデバックから、launch.jsonファイルを作成します。
をクリックしてファイルを作成します。
下記のようなファイルが作成できればOKです。launch.json
launch.json
ファイルにstopOnEntryを追記する
9."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