Skip to content

Fatal Error (Class "Normalizer" not found) without intl extension intalled #293

@marcimat

Description

@marcimat

Hello,

Our CI failed recently (with new 12.5.23 version) with the same error mentionned last week here : #285 (comment) with Fatal error: Uncaught Error: Class "Normalizer" not found in /builds/.../vendor/symplify/easy-coding-standard/vendor/symfony/string/AbstractUnicodeString.php:29 in an environment without php-intl installed.

If we add in require-dev both symfony/polyfill-intl-grapheme and symfony/polyfill-intl-normalizer , alongside the required "symplify/easy-coding-standard": "^12.1" the fatal disapear.

It’s seems related to #284.

ECS should require those polyfill, as there is symfony/string required in the 12.5.23 version, but it wasn’t here in 12.5.20…

Maybe, you simply need to remove these polyfill from the "replace" key of composer.json like you did in #284 with symfony/string ?

    "replace": {
-       "symfony/polyfill-intl-grapheme": "*",
        "symfony/polyfill-ctype": "*",
-       "symfony/polyfill-intl-normalizer": "*",
        "symfony/event-dispatcher": "7.*",
        "symfony/process": "7.*",
        "symfony/stopwatch": "7.*"
    },

And thank you for your great tool !


Backtrace of the fatal error.

$ php vendor/bin/ecs check
Fatal error: Uncaught Error: Class "Normalizer" not found in xxx/vendor/symplify/easy-coding-standard/vendor/symfony/string/AbstractUnicodeString.php:29
Stack trace:
#0 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Helper/Helper.php(46): [constant expression]()
#1 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Helper/ProgressBar.php(421): ECSPrefix202508\Symfony\Component\Console\Helper\Helper::width('673')
#2 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Helper/ProgressBar.php(148): ECSPrefix202508\Symfony\Component\Console\Helper\ProgressBar->setMaxSteps(673)
#3 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Style/OutputStyle.php(41): ECSPrefix202508\Symfony\Component\Console\Helper\ProgressBar->__construct(Object(ECSPrefix202508\Symfony\Component\Console\Output\StreamOutput), 673)
#4 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Style/SymfonyStyle.php(303): ECSPrefix202508\Symfony\Component\Console\Style\OutputStyle->createProgressBar(673)
#5 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Style/SymfonyStyle.php(282): ECSPrefix202508\Symfony\Component\Console\Style\SymfonyStyle->createProgressBar(673)
#6 xxx/vendor/symplify/easy-coding-standard/src/Application/EasyCodingStandardApplication.php(123): ECSPrefix202508\Symfony\Component\Console\Style\SymfonyStyle->progressStart(673)
#7 xxx/vendor/symplify/easy-coding-standard/src/Parallel/Application/ParallelFileProcessor.php(130): Symplify\EasyCodingStandard\Application\EasyCodingStandardApplication->{closure:Symplify\EasyCodingStandard\Application\EasyCodingStandardApplication::run():117}(20)
#8 xxx/vendor/symplify/easy-coding-standard/vendor/symplify/easy-parallel/src/ValueObject/ParallelProcess.php(130): Symplify\EasyCodingStandard\Parallel\Application\ParallelFileProcessor->{closure:Symplify\EasyCodingStandard\Parallel\Application\ParallelFileProcessor::check():115}(Array)
#9 xxx/vendor/symplify/easy-coding-standard/vendor/evenement/evenement/src/EventEmitterTrait.php(111): ECSPrefix202508\Symplify\EasyParallel\ValueObject\ParallelProcess->{closure:ECSPrefix202508\Symplify\EasyParallel\ValueObject\ParallelProcess::bindConnection():124}(Array)
#10 xxx/vendor/symplify/easy-coding-standard/vendor/clue/ndjson-react/src/Decoder.php(117): ECSPrefix202508\Evenement\EventEmitter->emit('data', Array)
#11 xxx/vendor/symplify/easy-coding-standard/vendor/evenement/evenement/src/EventEmitterTrait.php(111): ECSPrefix202508\Clue\React\NDJson\Decoder->handleData(Array)
#12 xxx/vendor/symplify/easy-coding-standard/vendor/react/stream/src/Util.php(62): ECSPrefix202508\Evenement\EventEmitter->emit('data', Array)
#13 xxx/vendor/symplify/easy-coding-standard/vendor/evenement/evenement/src/EventEmitterTrait.php(111): ECSPrefix202508\React\Stream\Util::{closure:ECSPrefix202508\React\Stream\Util::forwardEvents():61}('{"action":"resu...')
#14 xxx/vendor/symplify/easy-coding-standard/vendor/react/stream/src/DuplexResourceStream.php(168): ECSPrefix202508\Evenement\EventEmitter->emit('data', Array)
#15 xxx/vendor/symplify/easy-coding-standard/vendor/react/event-loop/src/StreamSelectLoop.php(201): ECSPrefix202508\React\Stream\DuplexResourceStream->handleData(Resource id #1276)
#16 xxx/vendor/symplify/easy-coding-standard/vendor/react/event-loop/src/StreamSelectLoop.php(173): ECSPrefix202508\React\EventLoop\StreamSelectLoop->waitForStreamActivity(100000)
#17 xxx/vendor/symplify/easy-coding-standard/src/Parallel/Application/ParallelFileProcessor.php(159): ECSPrefix202508\React\EventLoop\StreamSelectLoop->run()
#18 xxx/vendor/symplify/easy-coding-standard/src/Application/EasyCodingStandardApplication.php(134): Symplify\EasyCodingStandard\Parallel\Application\ParallelFileProcessor->check(Object(ECSPrefix202508\Symplify\EasyParallel\ValueObject\Schedule), 'vendor/bin/ecs', Object(Closure), NULL, Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput))
#19 xxx/vendor/symplify/easy-coding-standard/src/Console/Command/CheckCommand.php(64): Symplify\EasyCodingStandard\Application\EasyCodingStandardApplication->run(Object(Symplify\EasyCodingStandard\ValueObject\Configuration), Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput))
#20 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Command/Command.php(327): Symplify\EasyCodingStandard\Console\Command\CheckCommand->execute(Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput), Object(ECSPrefix202508\Symfony\Component\Console\Output\ConsoleOutput))
#21 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Application.php(960): ECSPrefix202508\Symfony\Component\Console\Command\Command->run(Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput), Object(ECSPrefix202508\Symfony\Component\Console\Output\ConsoleOutput))
#22 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Application.php(333): ECSPrefix202508\Symfony\Component\Console\Application->doRunCommand(Object(Symplify\EasyCodingStandard\Console\Command\CheckCommand), Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput), Object(ECSPrefix202508\Symfony\Component\Console\Output\ConsoleOutput))
#23 xxx/vendor/symplify/easy-coding-standard/src/Console/EasyCodingStandardConsoleApplication.php(50): ECSPrefix202508\Symfony\Component\Console\Application->doRun(Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput), Object(ECSPrefix202508\Symfony\Component\Console\Output\ConsoleOutput))
#24 xxx/vendor/symplify/easy-coding-standard/vendor/symfony/console/Application.php(216): Symplify\EasyCodingStandard\Console\EasyCodingStandardConsoleApplication->doRun(Object(ECSPrefix202508\Symfony\Component\Console\Input\ArgvInput), Object(ECSPrefix202508\Symfony\Component\Console\Output\ConsoleOutput))
#25 xxx/vendor/symplify/easy-coding-standard/bin/ecs.php(136): ECSPrefix202508\Symfony\Component\Console\Application->run()
#26 xxx/vendor/symplify/easy-coding-standard/bin/ecs(5): require('/builds/spip/ec...')
#27 xxx/vendor/bin/ecs(119): include('/builds/spip/ec...')
#28 {main}
  thrown in xxx/vendor/symplify/easy-coding-standard/vendor/symfony/string/AbstractUnicodeString.php on line 29

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions