Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

以前の記事で、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以外でもステップ実行できる環境として使えそうです。

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

lancers
テクノロジーで誰もが自分らしく働ける社会をつくる。日本最大級のクラウドソーシング「ランサーズ」を運営
https://www.lancers.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした