概要
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.ini
とlaradock/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のデバッガが反応してくれる。