Xdebug2の設定を3の設定に変換するやつ


・ヮ・)あ、おはようございまーす

みなさん Xdebug 使ってますか?
ステップ実行便利ですよね!

つい先日 PHP8 で開発環境を作っていたらエラーがでました

Xdebug: [Config] The setting 'xdebug.xxx' has been renamed, see the upgrading guide at

Xdebugさんバージョン3になったんですね(知らなかった
2 から 3 に バージョンアップするにあたって 設定方法がいくつか 変わったらしく エラーになってました
Upgrading from Xdebug 2 to 3

自分の環境はドキュメント読みつつ新しい設定に直したのですが
同僚やお友達から「設定を手伝っておくれ」と何回か言われて いちいち調べ直すのが面倒になり変換ツールを作りました

Xdebug2の設定を3の設定に変換するやつ

↑ここから飛べます

注意事項

  • やっつけで雑に作ってしっかりテストしていません
  • メンテナンスをする気はありません
  • 自己責任でお使いください
  • ドキュメント読みましょう
  • CSSはお亡くなりになりました

変換しきれない設定項目

Xdebug2 のときは 個別に設定できた項目が 1つにまとめられているものが いくつかあります
優先したい設定に合わせて選んでください

xdebug.start_with_requests

Xdebug2の設定が
xdebug.auto_trace = true もしくは xdebug.remote_autostart = true
のときは xdebug.start_with_requests = yes

Xdebug2の設定が
xdebug.profiler_enable_trigger= true もしくは xdebug.trace_enable_trigger= true
のときは xdebug.start_with_requests = trigger

xdebug.start_with_requests はXdebug3 で新しく追加された設定項目です
ドキュメントを読んで設定しましょう

output_dirs

xdebug.gc_stats_output_dirxdebug.profiler_output_dirxdebug.trace_output_dir
これらの設定が xdebug.output_dirs 1つになったようです
別々に設定されていた方はどれか一つ選んで設定する必要があります

xdebug.trigger_value

xdebug.profiler_enable_trigger_valuexdebug.trace_enable_trigger_value
これらの設定が xdebug.trigger_value 1つになったようです
別々に設定されていた方はどれか一つ選んで設定する必要があります

削除された項目

xdebug.collect_includes
xdebug.collect_vars
xdebug.extended_info
xdebug.overload_var_dump
xdebug.remote_handler
xdebug.show_mem_delta

これらの項目が削除されたようです
詳しくはドキュメントを読んでください

サイレントで消えた項目?

アップグレードガイドには載ってないのですが Xdebug2 には存在していて Xdebug3 には存在しない項目がありました

xdebug.manual_url
xdebug.profiler_aggregate
xdebug.remote_cookie_expire_time

見落としだったらすみません
一応入力されたらそのままの値で出力するようにしました

おまけ

xdebug.mode = debug
xdebug.start_with_requests = yes
の状態で IDEでステップ実行を開始せずに コマンドラインからPHPファイルを実行すると
タイムアウトして接続できなかった というエラーが表示されます

Xdebug: [Step Debug] Time-out connecting to debugging claited: 200 ms. Tried: ホスト (through xdebug.client_host/xdebug.client_-(

Laravel で artisan コマンドを実行するときなど 出てきます

対処方法は

# XDEBUG_MODE環境変数を使って一旦すべての機能をoffにする
export XDEBUG_MODE=off && php artisan xxx

もしくは

; log_levelを0にする
; logが出力されなくなるので注意(log見る人いる?
xdebug.log_level=0

するとエラーが表示されなくなります!