Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[HttpKernel][ErrorHandler] Undocumented BC with logging #53430

@radar3301

Description

@radar3301

Symfony version(s) affected

6.4

Description

https://github.com/symfony/symfony/blob/6.4/src/Symfony/Component/ErrorHandler/CHANGELOG.md
nor
https://github.com/symfony/symfony/blob/6.4/CHANGELOG-6.4.md

do not document the Breaking Change from 6.3 in Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer
for the now required Symfony\Component\HttpKernel\Log\DebugLoggerConfigurator on line 143

How to reproduce

composer init
composer require symfony/error-handler

Create an index.php file with the contents:

<?php

use Symfony\Component\ErrorHandler\BufferingLogger;
use Symfony\Component\ErrorHandler\DebugClassLoader;
use Symfony\Component\ErrorHandler\ErrorHandler;

require __DIR__ . '/vendor/autoload.php';

ErrorHandler::register(new ErrorHandler(new BufferingLogger(), true));

throw new \RuntimeException();

Run php -S localhost:8000 index.php and navigate to localhost:8000

Result:
Fatal error: Uncaught Symfony\Component\ErrorHandler\Error\ClassNotFoundError: Attempted to load class "DebugLoggerConfigurator" from namespace "Symfony\Component\HttpKernel\Log".
Did you forget a "use" statement for another namespace? in D:\php\symfony-error-handler-test\vendor\symfony\error-handler\ErrorRenderer\HtmlErrorRenderer.php:143
Stack trace:
#0 D:\php\symfony-error-handler-test\vendor\symfony\error-handler\ErrorRenderer\HtmlErrorRenderer.php(70): Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer->renderException()
#1 D:\php\symfony-error-handler-test\vendor\symfony\error-handler\ErrorHandler.php(645): Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer->render()
#2 D:\php\symfony-error-handler-test\vendor\symfony\error-handler\ErrorHandler.php(531): Symfony\Component\ErrorHandler\ErrorHandler->renderException()
#3 [internal function]: Symfony\Component\ErrorHandler\ErrorHandler->handleException()
#4 {main}
thrown in D:\php\symfony-error-handler-test\vendor\symfony\error-handler\ErrorRenderer\HtmlErrorRenderer.php on line 143

Expected result (without the requirement of having to composer require symfony/http-kernel):
image

Possible Solution

Options:

  1. Document the breaking change
  2. Move the Symfony\Component\HttpKernel\Log classes into symfony/error-handler (symfony/monolog-bridge and symfony/framework-bundle and symfony/http-kernel both already require symfony/error-handler, see image) image
  3. Revert this change

Option 2 "shouldn't" cause any issues, and will end up requiring less dependencies overall.

Additional Context

none

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions