[NFR]: Show the debug page in ADR apps
Les mainteneurs répondent en général sous 1 jour
@niden y travaille déjà.
Depuis le 3/11/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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()usesset_exception_handler()(src/Debug.php:178).Phalcon\ADR\Application::handle()catches eachThrowableand sends it toErrorResponder.AbstractHttpFront::run()also catches eachThrowable. The handler does not run for these exceptions.Debug::halt()throwsRequestHalted(src/Debug.php:147), andonUncaughtLowSeverity()throwsRuntimeWarning(src/Debug.php:253). In an Action, these also go toErrorResponder, so the client gets a generic error response.ErrorResponderhas 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 withDebug::renderHtml($exception). - Keep the status that
ErrorResponderset. A 404 fromRouteNotFoundkeeps 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
AccessGateallows. 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\Debugdoes not change. - Tests pass with full coverage.
phpcsandphpstanpass.
Depends on
- #14
- #47
Part of
#13
- Langage dominant
- PHP
- Étoiles
- 6
- Forks
- 3
- Merge moyen
- 5 h 50 min
- PR mergées (30 j)
- 18
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
FinanceFlash/unvibecode#577 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Administration: required plugin configuration field stays invalid after restoring its saved valueOuverteneeds-triage Platform(Default)
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
good first issue priority:low type:docs
Difficulté 1/5 1-3 heures Accessibilité débutants 95/100
crazy-goat/rabbit-stream#969 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
opensourcepos/opensourcepos#4801 ·
Les mainteneurs répondent en général sous 1 jour
-
backend docs
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Open-Locker/Open-Locker#368 ·
Les mainteneurs répondent en général sous 1 jour