勉強日記

チラ裏

Emacs + Laradock + Xdebug PHPステップ実行設定

環境

Xdebug

  • PHPをステップ実行したりブレーク貼ったりできる

有効化

  • laradockではフラグひとつでxdebugが入る

laradock/.env

...
WORKSPACE_INSTALL_XDEBUG=true
...
PHP_FPM_INSTALL_XDEBUG=true
...

設定

Laradock+PhpStormでXdebug

xdebug.remote_host=host.docker.internal
#xdebug.remote_connect_back=1
xdebug.remote_connect_back=0
#xdebug.remote_port=9000
xdebug.remote_port=9001
#xdebug.idekey=PHPSTORM

#xdebug.remote_autostart=0
xdebug.remote_autostart=1
#xdebug.remote_enable=0
xdebug.remote_enable=1
#xdebug.cli_color=0
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
  • php-fpmコンテナ-nginxコンテナ間の疎通に9000番ポートを使うので、
    他のポートを使用する
    • 今回は9001
  • host.docker.internalでコンテナ内からホストにアクセスできる
  • 変更を反映
docker-compose build workspace php-fpm
docker-compose up -d workspace php-fpm nginx
  • (storybookで既にホストの9001番を使ってて詰まるなどした)
  • ポートを変えるたびにリビルドするのは効率悪い。

xdebug.ini.tmpl

...
xdebug.remote_port={{ var "XDEBUG_PORT" | "9000" }}
...

geben

導入

  • M-x package-install geben

つかう

  • デフォルト設定では9000番ポートが使われる
  • 今回は9001番を使うので設定が必要:
(setq geben-dbgp-default-port 9001)
  • M-x geben
  • http://localhostにアクセスするとステップ実行が始まる!