LoginSignup
3
3

More than 5 years have passed since last update.

Laravel Homestead + IntelliJでリモートデバッグの環境構築方法

Last updated at Posted at 2017-08-01

はじめに

IntelliJでのリモートデバッグに書いてあるページは数あれど、
内容が散ってたり、書いてあるとおりにやっても上手くいかなかったりしたので、
自分で行った構築方法を整理するために書いておきます。
※PHP StormとUltimateが、細い部分で違うため、こういうことが起きてるのかな〜と思います。

ごちゃごちゃ触りまくった後なので、足りてなかったら教えてください。

環境

ホスト側

  • Windows10
  • PHP 7.1
  • Intellij idea ultimate 2017.1.4

ゲスト側

  • Homestead 最新version(Ubuntu)

前提条件

ホスト側には、PHP 7.1とIntelliJはインストール済とします。
ゲスト側は、Homesteadの設定でVagrant upができる状態とします。

構築手順

ホスト側

  1. IntelliJにリモートサーバーを設定する

    以下から設定する。
    [File] - [Settings] - [Languages & Frameworks] - [PHP] - [Servers]
    image.png
    それぞれ以下を指定します。

    • Host : homesteadに指定しているhost名
    • Port : homesteadに指定しているport番号(デフォルト80)
    • Debugger : Xdebug
    • File/Directory : ホスト側のプログラムが配置してあるパス
    • Absolute path on the server : ゲスト側とホスト側のマウントポイント(実際は違うはずだけど、シンボリックリンク、ジャンクションとか言った方が伝わる??)
  2. IntellijのRun Configurationsでリモートサーバーを紐づける

    以下から設定する

    [Run] - [Edit Configurations...]
    image.png
    PHP Web Applicationに追加します。
    それぞれ以下を設定します。

    • Server : 1.で作ったリモートサーバーを選択します。
    • Start URL : Debugモードを起動した時に、ブラウザで表示するURLを指定します。
  3. xdebugのポートを設定する
    以下から設定する。
    [File] - [Settings] - [Languages & Frameworks] - [PHP] - [debug]
    image.png
    任意の値で問題ないですが、デフォルトの9000は上手く動かないという解説が多く9001にしておけ、というサイトが多いので9001に設定してます。
    (9000ってそんな使ってるソフトないし、SonarQubeとか9000で突っ込んで普通に動くので、何かあるんだと思います。)

ここまでやればホスト側の設定はOKです。

ゲスト側

  1. 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に設定した画面が新しいタブで表示されるので、画面を操作してデバッグしてください。
image.png
上手く設定できていれば、こんな感じで止まって各変数の値が見れます。

最後に

PHP歴3カ月突破しましたが、初めのころは特にブレイクポイントで止めるという企業文化も無かった&周りも知らないみたいだったので、中々苦しかったです。
ブレイクポイントで止めれるようになってからは覚えるのも楽になったので、やっぱ基礎大事だし、
何か新しい言語・フレームワークを覚えるときは、データ構造が見えた方が手っ取り早くて良いな~と心から思いました。

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