けけずんセルフハッキング

忘れそうなことをメモる。

Laradock+PhpStormでXdebug

概要

Laradock+PhpStormな環境でXdebugを使う設定をするよ。

環境

手順

Laradockの設定、PhpStormの設定と順を追って設定していく。

Laradock

.envの設定

laradock/.envの項目を以下のように設定する。 もしかするとデフォで設定されてるかもだが、確認すべし。

WORKSPACE_INSTALL_XDEBUG=true
PHP_FOM_INSTALL_XDEBUG=true

php-fpmの、workspaceの設定

laradock/php-fpm/xdebug.inilaradock/workspace/xdebug.iniを以下のように設定する。

xdebug.remote_host=docker.for.mac.localhost
xdebug.remote_connect_back=0
xdebug.remote_port=9001
xdebug.idekey=PHPSTORM

xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.cli_color=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir="~/xdebug/phpstorm/tmp/profiling"

xdebug.remote_handler=dbgp
xdebug.remote_mode=req

xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1

xdebug.remote_portが9000だとphp-fpmと衝突するため、9001にしている。 あと他のサイトだとxdebug.remote_connect_backが1でも動作するっぽいけど、自分の環境だと動かなかったので0にしている。

スケジューラのコメントアウト

Laradockはデフォでスケジューラが組み込まれており、定期的にphp artisanなコマンドがcronで呼ばれるという罠が仕掛けられている(ちゃんとした使いみちは知らん)。 こいつはデバッガに引っかかってしまうため、呼び出されないように設定する。

laradock/workspace/crontab/laradockを以下のようにコメントアウトする。

# * * * * * laradock php /var/www/artisan schedule:run >> /dev/null 2>&1

これ確か前の勉強会の時にサボさんが言ってた奴だよな...。

dockerイメージの再構築

以下のコマンドを入力してdockerイメージを再作成する。

$ docker-compose build workspace php-fpm

PhpStorm

Languages & Flameworksの設定

"PhpStorm"->"Preferences"を開く。 サイドバーの"Languages & Frameworks"->"PHP"->"Servers"を選択する。 "Languages & Frameworks"の"+"をクリックする。

各項目の設定を以下のように行う。

  • "Name": laradock(なんでもよい)
  • "Host": localhost
  • "Port": 80
  • "Debugger": Xdebug
  • "User path mapping": チェックを入れる
  • パスマッピング(ローカルPCとdockerでリンクされるプロジェクトのパス)
    • "File/Directory": ローカルPC上のlaravelプロジェクトのパス
    • "Absolute path on the server": docker上のlaravelプロジェクトのパス

Debugの設定

"PhpStorm"->"Preferences"を開く。 サイドバーの"Languages & Frameworks"->"PHP"->"Debug"を選択する。 "Xdebug"項目中の項目を以下のように設定する。

  • "Debug port": 9001

PHP Remote Debugの設定

"Run"->"Edit Configurations..."を開く。 サイドバーの"Defaults"->"PHP Remote Debug"を選択する。

各項目の設定を以下のように行う。

  • "Filter debug connection by IDE key": チェックを入れる
  • "Server": laradock("Language & Framework"で付けた名前)
  • "IDE key(session id)": PHPSTORM

以上で設定終わり。

実行してみる

PhpStormで任意のコードにブレークポイントを仕掛ける。 ブラウザからそのコントローラに対応するページにアクセスすると、PhpStormのデバッガが反応してくれる。

参考