はじめに
IntelliJでのリモートデバッグに書いてあるページは数あれど、
内容が散ってたり、書いてあるとおりにやっても上手くいかなかったりしたので、
自分で行った構築方法を整理するために書いておきます。
※PHP StormとUltimateが、細い部分で違うため、こういうことが起きてるのかな〜と思います。
ごちゃごちゃ触りまくった後なので、足りてなかったら教えてください。
環境
ホスト側
- Windows10
- PHP 7.1
- Intellij idea ultimate 2017.1.4
ゲスト側
- Homestead 最新version(Ubuntu)
前提条件
ホスト側には、PHP 7.1とIntelliJはインストール済とします。
ゲスト側は、Homesteadの設定でVagrant upができる状態とします。
構築手順
ホスト側
-
IntelliJにリモートサーバーを設定する
以下から設定する。
[File] - [Settings] - [Languages & Frameworks] - [PHP] - [Servers]
それぞれ以下を指定します。- Host : homesteadに指定しているhost名
- Port : homesteadに指定しているport番号(デフォルト80)
- Debugger : Xdebug
- File/Directory : ホスト側のプログラムが配置してあるパス
- Absolute path on the server : ゲスト側とホスト側のマウントポイント(実際は違うはずだけど、シンボリックリンク、ジャンクションとか言った方が伝わる??)
-
IntellijのRun Configurationsでリモートサーバーを紐づける
以下から設定する
[Run] - [Edit Configurations...]
PHP Web Applicationに追加します。
それぞれ以下を設定します。- Server : 1.で作ったリモートサーバーを選択します。
- Start URL : Debugモードを起動した時に、ブラウザで表示するURLを指定します。
xdebugのポートを設定する
以下から設定する。
[File] - [Settings] - [Languages & Frameworks] - [PHP] - [debug]
任意の値で問題ないですが、デフォルトの9000は上手く動かないという解説が多く9001にしておけ、というサイトが多いので9001に設定してます。
(9000ってそんな使ってるソフトないし、SonarQubeとか9000で突っ込んで普通に動くので、何かあるんだと思います。)
ここまでやればホスト側の設定はOKです。
ゲスト側
- xdebugをインストールする
sudo apt-get install xdebug-*
2. xdebugの設定ファイルを修正する
ファイルの場所
/etc/php/7.1/fpm/conf.d/20-xdebug.ini
以下を追加する
xdebug.remote_enable = On
xdebug.remote_autostart = On
xdebug.remote_host = Homesteadに設定しているゲストのIPアドレス(デフォルト:192.168.10.10)
また、xdebug.remote_portをIntellijのxdebugのDebug portに指定した番号に変更する
3. 再起動する
sudo service php7.1-fpm restart
試してみる
IntelliJ上でコード開いて任意の箇所にブレイクポイントを打ち、以下からデバッグモードを起動する。
以下から起動する
[Run] - [Debug]
どれで起動するかを聞かれるため、今作った"homestead"を選択する。
起動するとブラウザに初期表示のURLに設定した画面が新しいタブで表示されるので、画面を操作してデバッグしてください。
上手く設定できていれば、こんな感じで止まって各変数の値が見れます。
最後に
PHP歴3カ月突破しましたが、初めのころは特にブレイクポイントで止めるという企業文化も無かった&周りも知らないみたいだったので、中々苦しかったです。
ブレイクポイントで止めれるようになってからは覚えるのも楽になったので、やっぱ基礎大事だし、
何か新しい言語・フレームワークを覚えるときは、データ構造が見えた方が手っ取り早くて良いな~と心から思いました。