LoginSignup
8
8

More than 3 years have passed since last update.

Laravel Homestead + PhpStormでXdebugを有効化する

Last updated at Posted at 2020-05-25

環境

  • MacBook Pro
  • Vagrant 2.2.9
  • Laravel Homestead 9.5.1
  • PHP 7.4.5
  • Xdebug 2.9.3
  • PhpStorm 2020.1.2 Preview

事前確認

Homestead環境なら入っている筈だが、一応確認する。
phpinfoを見て、Xdebug拡張が含まれているかを見る。
FireShot Capture 030 - PHP 7.4.5 - phpinfo() - likekeshi.test.png

ホスト設定

Vagrant上で実行します。


# Xdebugの設定ファイルを確認
vagrant@homestead:~$ php --ini | grep xdebug
# デフォルトでモジュールが無効のため、何も表示されない

# モジュールを有効化
vagrant@homestead:~$ sudo phpenmod xdebug

# もう一度確認
vagrant@homestead:~$ php --ini | grep xdebug
/etc/php/7.4/cli/conf.d/20-xdebug.ini, # ← 設定ファイルが追加された

# 設定ファイルを編集
vagrant@homestead:~$ sudo vim /etc/php/7.4/cli/conf.d/20-xdebug.ini

以下の内容に書き換える。
xdebug.remote_portが9000だと動かなかったので、9001にする。
php-fpmのデフォルトポートが9000なので、それと競合するっぽい。

/etc/php/7.4/cli/conf.d/20-xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_host = 10.0.2.2
xdebug.remote_port = 9001
xdebug.remote_autostart = 1
xdebug.idekey = PHPSTORM
xdebug.remote_log = /tmp/xdebug.log
xdebug.show_error_trace = 1
xdebug.max_nesting_level = 512

再起動して設定を反映します。


vagrant@homestead:~$ sudo service php7.4-fpm restart

IDE設定

  1. 設定を開く
  2. 「言語&フレームワーク > PHP > デバッグ」でXdebugのデバッグ・ポートを9001に設定 2.png
  3. OKボタンを押して設定を閉じる
  4. 右上にあるPHPデバッグ接続のリッスンボタンを押す 7.png
  5. Vagrant上のサイトにアクセスする(例: http://homestead.test/ )
  6. PhpStormで「Incoming Connection From Xdebug」というダイアログが現れるので、public/index.phpを選択し、受諾ボタンを押す 3.png
  7. 「言語&フレームワーク > PHP > サーバー」を見ると設定が追加されている。しかし間違った設定がなされているため修正する。(/publicの絶対パスを削除してルートディレクトリの絶対パスを設定する) 4.png ↓修正 5.png

これで設定は完了です。
好きなところにブレークポイントを貼って、サイトにアクセスしてみましょう。
6.png

処理が停止して変数の一覧が見れるようになりました。
F9キーを押すと次のブレークポイントまで処理をすすめることができます。便利ですね。

補足

xdebug.remote_autostart = 0に設定すれば、デバッグの自動実行を止めることができます。
その場合、サイトにアクセスする際にXDEBUG_SESSION_START=PHPSTORMのパラメータを明示的に付与する必要があります。
Xdebug helperというChrome拡張を使うと、URLに勝手にパラメータを付けてくれるのでオススメです。

参考リンク

8
8
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
8
8