Drupal 10: `cv` fails on CiviCRM 5.69.2
Overview
This is essentially a dupe of #3438 (closed) -- Civi tries to call the drupal logger before it has been bootstrapped.
Reproduction steps
- Run a cv command, like "cv api system.check"
- Get the error below if anything is logged before Drupal is up
Current behaviour
Here is the error from "cv -vvv":
In Drupal.php line 169:
[Drupal\Core\DependencyInjection\ContainerNotInitializedException]
\Drupal::$container is not initialized yet. \Drupal::setContainer() must be called with a real container.
Exception trace:
at /var/www/d8/web/core/lib/Drupal.php:169
Drupal::getContainer() at /var/www/d8/web/core/lib/Drupal.php:673
Drupal::logger() at /var/www/d8/vendor/civicrm/civicrm-core/CRM/Utils/System/Drupal8.php:301
CRM_Utils_System_Drupal8->url() at /var/www/d8/vendor/civicrm/civicrm-core/CRM/Utils/System.php:282
CRM_Utils_System::url() at /var/www/d8/vendor/civicrm/civicrm-core/tools/extensions/formprotection/settings/formprotection.setting.php:180
include() at /var/www/d8/vendor/civicrm/civicrm-core/Civi/Core/SettingsMetadata.php:109
Civi\Core\SettingsMetadata::loadSettingsMetadata() at /var/www/d8/vendor/civicrm/civicrm-core/Civi/Core/SettingsMetadata.php:92
Civi\Core\SettingsMetadata::loadSettingsMetaDataFolders() at /var/www/d8/vendor/civicrm/civicrm-core/Civi/Core/SettingsMetadata.php:66
Civi\Core\SettingsMetadata::getMetadata() at /var/www/d8/vendor/civicrm/civicrm-core/Civi/Core/SettingsManager.php:220
Civi\Core\SettingsManager->getDefaults() at /var/www/d8/vendor/civicrm/civicrm-core/Civi/Core/SettingsManager.php:102
Civi\Core\SettingsManager->useDefaults() at /var/www/d8/vendor/civicrm/civicrm-core/CRM/Core/Config.php:103
CRM_Core_Config::singleton() at phar:///usr/sbin/cv/src/Bootstrap.php:241
Civi\Cv\Bootstrap->boot() at phar:///usr/sbin/cv/src/Util/BootTrait.php:101
Civi\Cv\Command\ApiCommand->_boot_full() at n/a:n/a
call_user_func() at phar:///usr/sbin/cv/src/Util/BootTrait.php:45
Civi\Cv\Command\ApiCommand->boot() at phar:///usr/sbin/cv/src/Command/ApiCommand.php:59
Civi\Cv\Command\ApiCommand->execute() at phar:///usr/sbin/cv/vendor/symfony/console/Command/Command.php:255
Symfony\Component\Console\Command\Command->run() at phar:///usr/sbin/cv/vendor/symfony/console/Application.php:1009
Symfony\Component\Console\Application->doRunCommand() at phar:///usr/sbin/cv/vendor/symfony/console/Application.php:273
Symfony\Component\Console\Application->doRun() at phar:///usr/sbin/cv/src/Application.php:82
Civi\Cv\Application->doRun() at phar:///usr/sbin/cv/vendor/symfony/console/Application.php:149
Symfony\Component\Console\Application->run() at phar:///usr/sbin/cv/src/Application.php:49
Civi\Cv\Application::main() at phar:///usr/sbin/cv/bin/cv:27
require() at /usr/sbin/cv:14
Expected behaviour
cv should not throw this error.
Environment information
- CiviCRM: 5.69.2
- PHP: 8.1.14
- CMS: Drupal 10.2
Comments
I tried bgm's fix from issue #3438 (closed) (basically having CRM_Utils_System_Drupal8->url() return null before calling logger() if Drupal is not bootstrapped yet) and the error disappeared.