[NFR]: Show the debug page in ADR apps

クローズ
#48 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@niden がすでに取り組んでいます。

2026年11月3日 から。

評価

この issue はまだ評価されていません。

説明

enhancement
Summary

The package gives two things: the debug bar and the debug page (Phalcon\Debug). The debug page does not show in an ADR app, because ADR catches all exceptions before the debug page handler can run. Show the debug page in ADR apps, in development only.

Current state
  • Debug::listen() uses set_exception_handler() (src/Debug.php:178).
  • Phalcon\ADR\Application::handle() catches each Throwable and sends it to ErrorResponder. AbstractHttpFront::run() also catches each Throwable. The handler does not run for these exceptions.
  • Debug::halt() throws RequestHalted (src/Debug.php:147), and onUncaughtLowSeverity() throws RuntimeWarning (src/Debug.php:253). In an Action, these also go to ErrorResponder, so the client gets a generic error response.
  • ErrorResponder has a debug mode that gives the exception to the client. It does not give the debug page (backtrace, code fragments and superglobals).
Proposed direction
  • Use the logger adapter from #47 to get the exception.
  • Add a listener on application:afterHandle. When the logger received an exception, the response status is 500 or higher and the response is not JSON, the listener replaces the response content with Debug::renderHtml($exception).
  • Keep the status that ErrorResponder set. A 404 from RouteNotFound keeps the application error page.
  • The application opts in through a config key of the ADR service provider from #14.
  • The listener runs only when the bar boots, and only for a client that AccessGate allows. The debug page shows sensitive data.
Notes

This design is not tested yet. Test it first in this issue.

Acceptance
  • In an ADR app in development, an exception in an Action shows the debug page.
  • Debug::halt() in an Action shows the debug page.
  • The debug page is absent in a blocked environment and for a denied client.
  • The debug page does not replace a JSON response or a 404 response.
  • The bar is not injected into the debug page.
  • The public API of Phalcon\Debug does not change.
  • Tests pass with full coverage. phpcs and phpstan pass.
Depends on
  • #14
  • #47
Part of

#13

主要言語
PHP
スター
6
フォーク
3
平均マージ
3時間 31分
マージ済み PR(30日)
43

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

phalcon/debugbar のほかの issue

phalcon/debugbar の issue をすべて見る

似ている issue

PHP の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。