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

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

環境

  • 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に勝手にパラメータを付けてくれるのでオススメです。

参考リンク

_hiro_dev
ツイ消しツール「ツイ消し職人 ( https://twikeshi.net )」の開発者 / 25歳フリーランス / 応用情報技術者 / CCNA / Laravel / Vue.js / SQL / 声優オタク / 温泉オタク / サウナー / 技術で世の中をもっと便利にする
https://hir0.dev/
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
ユーザーは見つかりませんでした