PHP 8.1 throwing error with concrete 8.5.7

Hello Team,

I am using concrete 8.5.7 and trying to update the PHP version to 8.1 but it is throwing following error

PHP Fatal error:  Uncaught Error: Class "Doctrine\DBAL\Driver\PDO" not found in /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:28
Stack trace:
#0 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/composer/ClassLoader.php(444): include()
#1 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/home/publ...')
#2 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/Connection/PDOConnection.php(12): Composer\Autoload\ClassLoader->loadClass('Doctrine\\DBAL\\D...')
#3 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/composer/ClassLoader.php(444): include('/home/publ...')
#4 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/home/publ...')
#5 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/Driver/PDOMySqlConcrete5/Driver.php(17): Composer\Autoload\ClassLoader->loadClass('Concrete\\Core\\D...')
#6 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(360): Concrete\Core\Database\Driver\PDOMySqlConcrete5\Driver->connect(Array, 'databasename, 'databasepass', Array)
#7 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): Doctrine\DBAL\Connection->connect()
#8 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
#9 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\DBAL\Connection->detectDatabasePlatform()
#10 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/Connection/ConnectionFactory.php(57): Doctrine\DBAL\Connection->getDatabasePlatform()
#11 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/Connection/ConnectionFactory.php(71): Concrete\Core\Database\Connection\ConnectionFactory->createConnection(Array)
#12 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/DatabaseManager.php(185): Concrete\Core\Database\Connection\ConnectionFactory->make(Array, 'concrete')
#13 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/DatabaseManager.php(94): Concrete\Core\Database\DatabaseManager->makeConnection('concrete')
#14 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Database/DatabaseManager.php(77): Concrete\Core\Database\DatabaseManager->connection()
#15 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Support/Facade/Database.php(26): Concrete\Core\Database\DatabaseManager->get()
#16 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/src/Error/Handler/ErrorHandler.php(58): Concrete\Core\Support\Facade\Database::__callStatic('get', Array)
#17 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/filp/whoops/src/Whoops/Run.php(370): Concrete\Core\Error\Handler\ErrorHandler->handle(Object(Whoops\Exception\ErrorException))
#18 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/filp/whoops/src/Whoops/Run.php(454): Whoops\Run->handleException(Object(Whoops\Exception\ErrorException))
#19 /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/filp/whoops/src/Whoops/Run.php(486): Whoops\Run->handleError(1, 'Uncaught Error:...', '/home/publ...', 28)
#20 [internal function]: Whoops\Run->handleShutdown()
#21 {main}
  thrown in /home/public_html/highrisk/updates/concrete5-8.5.7/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php on line 28

I have contacted the host and made sure everything is correct on server like PHP 8.1 installation PDO version and everything.

Can anyone help me solve the issue.

Thank You! :slight_smile:

Concrete version 8 doesn’t work with PHP8. Max. and recommended version is PHP7.4.
You should update to Concrete 9 before moving to PHP8.

2 Likes

Hello Parasek,

Thanks for the information and providing the information.

Now, I am facing the new issue, it throwing error on “Undefined method fetch_row()”

“Call to undefined method Doctrine\DBAL\ForwardCompatibility\Result::mysqli_fetch_row()”

Following is the code I have changed the table name

$db = Database::getActiveConnection();
        $rs = $db->execute("SELECT * FROM abc");
        $settings = array();
        while ($setting = $rs->mysqli_fetch_row()) {
            if (in_array($setting['name'], self::$booleanSettings)) {
                $setting['value'] = $setting['value'] ? true : false;
            }
            $settings[$setting['name']] = $setting['value'];
        }

Can anyone help me with it, please

Thank You! :slight_smile: