VSCodeでPHPのデバッグとブレークポイントを有効化する方法

ローカル環境でVSCode を使った PHP 開発でのデバッグ時、ブレークポイント を有効化する方法を説明します。

VSCodeでのPHPデバッグ時、ブレークポイントを有効にする

ローカル環境でVSCodeを使ってPHP開発するにあたり、デバッグ時のブレークポイント機能を使えないと効率がとても悪い。
今回、下記のようにブレークポイントを貼り、有効化することが出来たのだが、その作業に3時間ぐらいかかってしまった。
今後のために、メモしておく。

アプリ
クライアントChrome1. Chromeで、localhost にアクセスする(portも正しく指定すること)

サーバーVSCode2. すると、VSCodeで設定したブレークポイントにヒットした場合に、そこでファイルの読み込みが一時停止する。

ここでは、何をしたらこのような設定が出来たのか、書いておく。

開発環境: Windows10 + VSCode + XAMPP Version 8.2.12 + PHP 8.2.12

手順1.拡張機能のインストール

まずはVSCodeの拡張機能、PHP Debugをインストールする。
同じ名前がいくつかあるが、Xdebugを選ぶ。

手順2.PHP.iniファイルの編集

PHP.iniファイルを編集して、下記、xdebugに関する設定を下記のようにする。

[PHP]
...
zend_extension = xdebug
xdebug.mode = debug
xdebug.start_with_request = yes

 自分の環境では、下記の箇所を修正した。

手順3. launch.jsonファイルの編集

 VSCodeのデバッグメニューから、歯車をクリックすると launch.jsonファイルが開く。 

“Launch built-in server and debug”

ファイルの”configurations”に、”Launch built-in server and debug”が設定されていることを確認する。
特に、”runtimeArgs”の”-S”の値が重要。
自分の環境では、”localhost:8000″と設定していることを確認した。

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch built-in server and debug",
            "type": "php",
            "request": "launch",
            "runtimeArgs": [
                "-S",
                "localhost:8000",
                "-t",
                "."
            ],
            "port": 9003,
            "serverReadyAction": {
                "action": "openExternally"
            }
        },

手順4. PHP Pathの確認

設定項目のPHP Server configurationを開き、PHP Pathという項目を確認する。
php.exeへのPathが設定されているかどうか、確認する。
($PATHに設定がされている場合、空欄で良いらしい)

手順5. ブレークポイントの設定とデバッグの実行

PHPファイルにブレークポイントを貼ってみる。
その後、”Launch built-in server and debug”を選択して、デバッグ実行する。

三角マークをクリックするとPHPが実行状態になる。
VSCodeの画面に下記、デバッグメニューが表示されれば成功。

動作確認、クライアントからアクセスする

全ての手順を終えた後で、動作確認をしてみる。
ローカルPCでChromeを立ち上げて、”localhost:8000″にアクセスしてみる。
(通常、 index.htmlや index.phpにアクセスすることになる)

 

結果:index.phpファイルに設定したブレークポイントにヒットし、一時停止になれば成功。

この状態になれば、観察したい変数をウォッチ式で見ることが出来る。
また、ステップオーバーやステップインで1行ずつコード実行させる等、デバッグを効率的に進めることが出来る。