search
LoginSignup
56

More than 3 years have passed since last update.

posted at

updated at

Organization

Visual Studio CodeでPHPのステップ実行

はじめに

以前の記事で、Docker + PHP Storm でステップ実行する方法を紹介しました。
https://qiita.com/yKanazawa/items/363ba93f8a376c5b9e75
今回は、そのVisual Studio Code版になります。

無償のエディタでPHPのステップ実行ができる環境が作れますので、会社でも積極的に導入できるかと思います。
個人的には、PHP Stormと比較しても遜色ない(長所もあれば短所もある)デバッグ環境だと思いました。

以下、Visual Studio Code + XDebug でデバッグ・ステップ実行する方法を解説します。

検証環境

  • Windows 10 Professional
  • Docker for Windows
    • nginx
    • PHP-FPM
    • XDebug
  • Visual Studio Code

PHP-FPMの設定

Dockerコンテナ内の/etc/php.d/xdebug.iniを以下のように設定します。

[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable = On
xdebug.remote_port = 9000
xdebug.remote_autostart = On
xdebug.remote_host = host.docker.internal
xdebug.profiler_output_dir = "/tmp"
xdebug.max_nesting_level= 1000

Visual Studio Codeの設定

拡張機能の PHP Debug をインストールします。
1.png

Debug → Add Configuration → PHP を選択します。
2.png

Listen for XDebug を以下のように設定します。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "stopOnEntry": true,
            "pathMappings": {
                "/var/www/test": "${workspaceRoot}"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

※うまく動かないときは${workspaceRoot}をフルパスでベタ書きすると良いかも。

     "/var/www/test": "${workspaceRoot}"
↓
     "/var/www/test": "c:/Users/kanazawa/www/test"

ステップ実行の開始

「Listen For XDebug」を選択した状態で、横の再生ボタンを押下します。
5.PNG

ブレークポイントを予め設定しておくと、その位置で停止します。
画面上部のツールバーアイコンから、ステップオーバーが可能です。
4.png

最後に

Visual Studio Codeは様々なプログラミング言語をサポートしているので、PHP以外でもステップ実行できる環境として使えそうです。

今後、他のプログラミング言語についても調べていきたいと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
56