Vagrant+XDebug+PhpStormでデバッグ

前提

  • Windows
  • Vagrant 2.1.2
    • ScotchBox 3.5 Free
  • PhpStorm 2018.2

やりたいこと

Vagrant上で開発しているWebアプリケーションのPHPを、ホスト側のPhpStormでデバッグしたい。(ステップ実行など)

やること

2018/10 ScotchBox3.5, PHP7.0用に更新(あんまり変わってないけど)

仮想マシン上にXDebugインストール

  • 仮想マシンにSSH接続
    • > vagrant ssh
  • xdebug インストール
    • $ sudo apt update (リポジトリ更新)
    • $ sudo apt search xdebug (xdebugを探す→php-xdebug という名称が見つかる)
    • $ sudo apt install php-xdebug
  • iniを編集
  • apache2 を再起動
    • $ sudo service apache2 restart
  • 確認
    • $ php –version で、「with Xdebug …」という文が現れればOK

PHPStorm上の設定

  • PHPStormから、メニューバー[Run] » [Web Server Debug Validation]
    • 最上段のラジオボタンで [Local Web Server or Shared Folder] を選択
    • [Path to create validation script] に、ScotchBox上のpublicフォルダ
    • [Url to validation script] に、仮想マシンのIPアドレス(http://192.168.33.10/
    • [Validate]して、全てのチェックに通るか確認する
  • [File] » [Settings]から設定を開く
    • [Languages & Frameworks] » [PHP] » [Debug]
      • [Xdebug] の [Debug port] が「9000」
      • その後の3つのチェックボックスを全てチェック
    • [Languages & Frameworks] » [PHP] » [Servers]
      • “+“アイコンより、サーバを設定
      • Name: SoctchBox(任意)
      • Host: 192.168.33.10
      • Port: 80
      • Debugger: Xdebug
      • “Use path mappings”にチェック、ScotchBoxでの共有フォルダをローカル側とホスト側で関連づける
        • 基本的には、Vagrantのルートを「/var/www」に結びつければよい
  • [Run] » [Edit Configurations]
    • ”+“ボタンから[PHP Web Page]を選択
      • Name: 任意
      • Server: ScotchBox(さっき設定したやつ)
      • Start URL: デバッグする入口ページ(URLルートからの相対)
  • 設定完了!

デバッグ実行

  • 適当にブレークポイントを設定
    • または [Run] » [Break at first line in PHP scripts] で、PHPコードの1行目で自動的に止まる
  • 右上の受話器のアイコンをクリックし、音が鳴ってる状態のアイコンにする
  • 右上のデバッグ(虫)ボタンを押す
  • [Edit Configurations] で設定したURLが開く

URLにGETで「XDEBUG_SESSION_START={任意のsession_id}」を渡すことでデバッグセッションが有効になる(デバッグボタンで自動的に付与される)。一度有効になるとCookieに保存され、期限切れまではXDEBUG_SESSION_START無しでも有効で有り続ける。有効期限などの設定はxdebug.iniで行う。

PHP5.6

software/intellij/phpstorm/debug_scotchbox.txt · 最終更新: 2019/05/09 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0