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を編集
$ sudo vim /etc/php/{php_var}/mods-available/xdebug.ini
- xdebug.ini
zend_extension=xdebug.so [+] xdebug.remote_host=192.168.33.1 [+] xdebug.remote_enable=1 [+] xdebug.remote_connect_back=1 [+] xdebug.remote_port=9000
- 詳しい設定項目の意味は[PHP] Xdebug のリモートデバッグ、理解していますか? - Qiita
- 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で行う。