Xdebugのvar_display_max_XXXが設定変更されない
概要
Xdebugを使用したPHPのデバッグをする際にvar_dump
の内容をすべて表示するために
var_display_max_XXX
の設定をする必要がありますがVSCode + Xdebugでのリモートデバッグだと
設定が反映されず詰まったのでメモです。
Dockerを使用したPHP-FPM + nginxの環境でVSCode + Xdebugみたいな構成です。
結果的にはリモートデバッグ専用の設定があった感じです。
目次
参考サイト様
- felixfbecker/vscode-php-debug: PHP Debug Adapter for Visual Studio Code 🐞⛔
- Xdebug: Documentation - Protocol - DBGp
- 【php】Xdebugのvar_dump()の出力内容を設定したい at softelメモ
- //stackoverflowを参考にしたんですが該当の質問を見つけられませんでした...
環境
- Mac OS X Mojave 10.14.4
- Visual Studio Code Version: 1.33.1
- PHP Debug Version: 1.13.0
$ docker -v Docker version 18.09.2, build 6247962 $ docker-compose -v docker-compose version 1.23.2, build 1110ad01
PHP-FPM(7系)やNginxのバージョンはlatest
です。
下記リポジトリを例に進めます。
事象
前述の環境(構成)でxdebug.ini
に下記項目を設定したが反映されませんでした。
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
上記設定を行った背景としてはVSCodeでデバッグした際にデフォルト設定値を超える配列の要素数が表示されずに頭抱えてた感じです。
原因
前述の3設定についてはリモートデバッグには反映されないため。
該当の設定値については公式ドキュメントに下記の記載がありました。
This setting does not have any influence on the number of children that is send to the client through the Remote Debugging feature.
Xdebug: Documentation
対策
VSCodeのlaunch.json
側で前述の設定値と対になる設定を行います。
launch.json
の編集
設定値についてはPHP Debugのドキュメントに記載がありました。
launch.json
にxdebugSettings
セクションを追加します。
追加項目は下記の2つです。
max_children
max_data
上記2項目の設定については下記のドキュメントに記載があります。
{ "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9000, "stopOnEntry": true, "pathMappings": { "/var/phpapp": "${workspaceRoot}/src" }, //下記を追加 "xdebugSettings": { "max_children": 999, "max_data": 999 } }, //省略 ] }
また、設定値についてはphp.ini
で設定する際には-1
がセオリーっぽいんですが
-1
を設定するとVSCodeでうまくデバッグが開始できませんでした。
なので999
を設定しています。
雑感
配列の要素が全て表示されないからマジでDBから取得下データがコードのどこかで消失してると思って頭抱えてた。