Error after update: Undefined class constant

Hi there,

I’m using Invoice Ninja on shared hosting (PHP 7.4). Problem occured when I updated files from 5.3.46 to 5.3.48. When I typed php artisan optimize after update (through git pull command), error appeared:

Configuration cache cleared!

In ninja.php line 63:

  Undefined class constant 'MYSQL_ATTR_SSL_VERIFY_SERVER_CERT'

After this error artisan commands stopped working (or at least it stopped giving me any response). In laravel.log I got this error:

[2022-01-20 08:03:29] production.ERROR: Undefined class constant 'MYSQL_ATTR_SSL_VERIFY_SERVER_CERT' {"exception":"[object] (Error(code: 0): Undefined class constant 'MYSQL_ATTR_SSL_VERIFY_SERVER_CERT' at .../domains/.../public_html/crm/config/ninja.php:63)
[stacktrace]
#0 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(72): require()
#1 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php(39): Illuminate\\Foundation\\Bootstrap\\LoadConfiguration->loadConfigurationFiles(Object(Illuminate\\Foundation\\Application), Object(Illuminate\\Config\\Repository))
#2 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(237): Illuminate\\Foundation\\Bootstrap\\LoadConfiguration->bootstrap(Object(Illuminate\\Foundation\\Application))
#3 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\\Foundation\\Application->bootstrapWith(Array)
#4 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php(88): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#5 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php(58): Illuminate\\Foundation\\Console\\ConfigCacheCommand->getFreshConfiguration()
#6 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Foundation\\Console\\ConfigCacheCommand->handle()
#7 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#8 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#9 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#10 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/Container.php(611): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#11 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\\Container\\Container->call(Array)
#12 .../domains/.../public_html/crm/vendor/symfony/console/Command/Command.php(256): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArrayInput), Object(Illuminate\\Console\\OutputStyle))
#13 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArrayInput), Object(Illuminate\\Console\\OutputStyle))
#14 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(68): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArrayInput), Object(Illuminate\\Console\\OutputStyle))
#15 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(28): Illuminate\\Console\\Command->runCommand('config:cache', Array, Object(Illuminate\\Console\\OutputStyle))
#16 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php(30): Illuminate\\Console\\Command->call('config:cache')
#17 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Foundation\\Console\\OptimizeCommand->handle()
#18 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#20 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#21 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Container/Container.php(611): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#22 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\\Container\\Container->call(Array)
#23 .../domains/.../public_html/crm/vendor/symfony/console/Command/Command.php(256): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#24 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#25 .../domains/.../public_html/crm/vendor/symfony/console/Application.php(971): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#26 .../domains/.../public_html/crm/vendor/symfony/console/Application.php(290): Symfony\\Component\\Console\\Application->doRunCommand(Object(Illuminate\\Foundation\\Console\\OptimizeCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 .../domains/.../public_html/crm/vendor/symfony/console/Application.php(166): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#28 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Console/Application.php(92): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#29 .../domains/.../public_html/crm/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#30 .../domains/.../public_html/crm/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#31 {main}

Hi,

@david any ideas?

I removed this line from config file and Invoice Ninja is working again. But I don’t want to change this file after every update so I’m still looking for solution.

db_options got commented in 5.3.49. For now problem seems to be solved.