Site down after composer update

I am running PHP 7.4.9 (default) and PHP 7.3.21 installed using Remi's RPM repository, and use php fpm pools to allow C5 to use php73.

I have an existing C5 site installed using composer, just executed "composer update". Some of the relevant output at the bottom of this post.

First error occurred at Dotenv\Exception\InvalidPathException\Loader::ensureFileIsReadable() complaining that .env didn't exist so I created on with my applicable concrete5 database credentials.

Tried again, but this time /concrete5/vendor/patchwork/utf8/src/Patchwork/Utf8/Bootup/intl.php compained that function normalizer_is_normalized() is already defined in symfony/polyfill-intl-normalizer/bootstrap.php

So, gave PHP 7.4.9 a try, but received a host of other errors.

Went back to PHP 7.3.21, and went to and saw that their composer.json file had "files": ["src/helpers.php"]. On a whim, added it but no good.

Did a yum update and am now on PHP 7.3.22. Error persists.

Added platform to composer.json, executed composer update using "/usr/bin/php73 /usr/local/bin/composer update". No change.

"config": {
    "preferred-install": "dist",
    "platform": {
        "php": "7.3.22"

Copied vendor to vendor_old, and did a new composer update using php73 so I get all new files. No change.

Looking at the earlier composer updates as well as the latest from scratch version, always get the following warning.

Warning: Ambiguous class resolution, "Normalizer" was found in both "/var/www/concrete5/vendor/patchwork/utf8/src/Normalizer.php" and "/var/www/concrete5/vendor/voku/portable-utf8/src/Normalizer.php", the first will be used.

Thinking maybe composer should have used the other class, added the following to composer.json. No change.

"autoload-dev": {
    "psr-4": {
      "ConcreteComposer\\" : "./tests"
    "exclude-from-classmap": [

Desperate, I went to /concrete5/vendor/patchwork/utf8/src/Patchwork/Utf8/Bootup/intl.php and commented out normalizer_is_normalized(), but the next function caused a similar error so commented out every line in the file. Now I get a little further, but C5 errors:

Whoops \ Exception \ ErrorException (E_COMPILE_ERROR)
Declaration of Concrete\Core\Database\Driver\PDOStatement::free() must be compatible with Doctrine\DBAL\Driver\PDOStatement::free(): void.

I am at my wits end, and would really appreciate a little help. Thanks!!!

$ composer update
Gathering patches from concrete5/dependency-patches (extra.patches).
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 11 installs, 53 updates, 0 removals
  - Updating mlocati/concrete5-translation-library (1.5.13 => 1.6.0): Loading from cache
  - Updating concrete5/core (8.5.2 => 8.5.4): Loading from cache
Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.
Package league/url is abandoned, you should avoid using it. Use league/uri instead.
Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
Package zendframework/zend-cache is abandoned, you should avoid using it. Use laminas/laminas-cache instead.
Package zendframework/zend-code is abandoned, you should avoid using it. Use laminas/laminas-code instead.

PS. I've always been concerned about all of composer's abandoned warnings, and wondered whether I need to do anything about it.

View Replies: