13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ozvisionAdvent Calendar 2019

Day 5

VSCodeでPHP+Vagrantのデバッグ環境を構築する

Posted at

背景・動機

  • デバッグ作業をする際にvar_dumpなどを使って出力していた。
  • 場合によっては20個くらいvar_dumpするので、かなり非効率。
  • マスターのソースコードに消し忘れたvar_dumpが混入している。

XDebug使えば?と言われて使ってみたらかなり便利で世界が変わったので、共有したいと思い投稿しました。

前提

  • Vagrantで起動されたPHP環境がある。
  • XDebugはインストール済み。
  • VSCodeにPHP Debugプラグインがインストール済み。

手順

  1. Vagrantのphp.iniファイルでXDebugを有効化
  2. VSCodeのlaunch.jsonにデバッガの設定を追加
  3. Chrome拡張をインストール
  4. ブレークポイントをはる
  5. デバッグモードにする
  6. アプリケーションを起動

1. Vagrantのphp.iniファイルでXDebugを有効化

php.iniファイルに以下の設定を追記します。
追記後はservice httpd restartしましょう。

xdebug.remote_enable=1
xdebug.idekey="vscode"
xdebug.remote_host=192.168.33.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_connect_back=1

xdebug.remote_log=/tmp/xdebug.log

2. VSCodeのlaunch.jsonにデバッガの設定を追加

VSCode左メニューのデバッグアイコンをクリックし、左上の歯車アイコンをクリックするとjsonファイルが開くので、以下のように追記します。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "serverSourceRoot": "/path/to/app",
      "localSourceRoot": "${workspaceRoot}"
    }
  ]
}

3. Chrome拡張をインストール

Xdebug helper

※対象のアプリケーションがWebAPIなどの場合は、GETパラメータにXDEBUG_SESSION_START=vscodeを追加することで、この手順を省略できます。

4. ブレークポイントをはる

スクリーンショット 2019-11-28 15.46.07.png
  • VSCode上で任意の行番号の左をクリック。

5. デバッグモードにする

スクリーンショット 2019-11-28 15.46.26.png
  • 左メニューの虫アイコンをクリックし、デバッグ右の▶︎をクリック。

6. アプリケーションを起動

スクリーンショット 2019-11-28 15.47.50.png
  • アプリケーションを起動すると、ブレークポイントをはった行で実行が止まり、変数の中身が一覧されます。

デバッガ便利なので是非使ってみてください。

13
11
0

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
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?