CiviCRM standalone installation causes "$API Request Authorization failed"
Overview
Installation of CiviCRM standalone via the web installer causes a "$API Request Authorization failed" in the CiviCRM log files. The installation seemed to be successful though. Everything seems to be working.
Reproduction steps
- Set up a bear LAMP stack server, according to requirements.
- Copy and extract CiviCRM standalone tar-ball. Set folder and file permissions.
- Call URL and run installation.
Current behaviour
Full error log:
2025-02-03 13:03:12+0000 [info] Creating canary table
2025-02-03 13:03:25+0000 [debug] $API Request Authorization failed = #0 /var/www/html/core/Civi/API/Kernel.php(148): CRM_Core_Error::backtrace("API Request Authorization failed", TRUE)
#1 /var/www/html/core/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
#2 /var/www/html/core/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php(221): Civi\Api4\Generic\AbstractAction->execute()
#3 /var/www/html/core/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php(197): Civi\Api4\Event\Subscriber\ImportSubscriber::getImportForms()
#4 [internal function](): Civi\Api4\Event\Subscriber\ImportSubscriber::on_civi_afform_get(Object(Civi\Core\Event\GenericHookEvent), "civi.afform.get", Object(Civi\Core\UnoptimizedEventDispatcher))
#5 /var/www/html/core/Civi/Core/Event/ServiceListener.php(53): call_user_func_array((Array:2), (Array:3))
#6 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(230): Civi\Core\Event\ServiceListener->__invoke(Object(Civi\Core\Event\GenericHookEvent), "civi.afform.get", Object(Civi\Core\UnoptimizedEventDispatcher))
#7 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:2), "civi.afform.get", Object(Civi\Core\Event\GenericHookEvent))
#8 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Core\Event\GenericHookEvent), "civi.afform.get")
#9 /var/www/html/core/ext/afform/core/Civi/Api4/Action/Afform/Get.php(41): Civi\Core\CiviEventDispatcher->dispatch("civi.afform.get", Object(Civi\Core\Event\GenericHookEvent))
#10 /var/www/html/core/Civi/Api4/Generic/BasicGetAction.php(51): Civi\Api4\Action\Afform\Get->getRecords()
#11 /var/www/html/core/Civi/Api4/Provider/ActionObjectProvider.php(91): Civi\Api4\Generic\BasicGetAction->_run(Object(Civi\Api4\Generic\Result))
#12 /var/www/html/core/Civi/API/Kernel.php(153): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Action\Afform\Get))
#13 /var/www/html/core/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Action\Afform\Get))
#14 /var/www/html/core/ext/afform/core/afform.php(413): Civi\Api4\Generic\AbstractAction->execute()
#15 /var/www/html/core/CRM/Utils/Hook.php(272): afform_civicrm_alterMenu((Array:472))
#16 /var/www/html/core/CRM/Utils/Hook.php(194): CRM_Utils_Hook->runHooks((Array:12), "civicrm_alterMenu", 1, (Array:472), NULL, NULL, NULL, NULL, NULL)
#17 /var/www/html/core/CRM/Utils/Hook/Standalone.php(43): CRM_Utils_Hook->commonInvoke(1, (Array:472), NULL, NULL, NULL, NULL, NULL, "civicrm_alterMenu", "")
#18 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(310): CRM_Utils_Hook_Standalone->invokeViaUF(1, (Array:472), NULL, NULL, NULL, NULL, NULL, "civicrm_alterMenu")
#19 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(230): Civi\Core\CiviEventDispatcher::delegateToUF(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_alterMenu", Object(Civi\Core\UnoptimizedEventDispatcher))
#20 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:5), "hook_civicrm_alterMenu", Object(Civi\Core\Event\GenericHookEvent))
#21 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_alterMenu")
#22 /var/www/html/core/CRM/Utils/Hook.php(168): Civi\Core\CiviEventDispatcher->dispatch("hook_civicrm_alterMenu", Object(Civi\Core\Event\GenericHookEvent))
#23 /var/www/html/core/CRM/Utils/Hook.php(689): CRM_Utils_Hook->invoke((Array:1), (Array:472), NULL, NULL, NULL, NULL, NULL, "civicrm_alterMenu")
#24 /var/www/html/core/CRM/Core/Menu.php(78): CRM_Utils_Hook::alterMenu((Array:472))
#25 /var/www/html/core/CRM/Core/Menu.php(180): CRM_Core_Menu::xmlItems(TRUE)
#26 /var/www/html/core/CRM/Core/Menu.php(333): CRM_Core_Menu::items(TRUE)
#27 /var/www/html/core/CRM/Core/Invoke.php(389): CRM_Core_Menu::store()
#28 /var/www/html/core/CRM/Extension/Manager.php(319): CRM_Core_Invoke::rebuildMenuAndCaches(TRUE)
#29 /var/www/html/core/CRM/Extension/Manager.php(362): CRM_Extension_Manager->install((Array:6), "enable")
#30 /var/www/html/core/api/v3/Extension.php(119): CRM_Extension_Manager->enable((Array:6))
#31 /var/www/html/core/Civi/API/Provider/MagicFunctionProvider.php(89): civicrm_api3_extension_enable((Array:2))
#32 /var/www/html/core/Civi/API/Kernel.php(153): Civi\API\Provider\MagicFunctionProvider->invoke((Array:8))
#33 /var/www/html/core/Civi/API/Kernel.php(79): Civi\API\Kernel->runRequest((Array:8))
#34 /var/www/html/core/api/api.php(147): Civi\API\Kernel->runSafe("Extension", "enable", (Array:2))
#35 /var/www/html/core/setup/plugins/installDatabase/InstallExtensions.civi-setup.php(20): civicrm_api3("Extension", "enable", (Array:2))
#36 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(230): Civi\Setup::{closure}(Object(Civi\Setup\Event\InstallDatabaseEvent), "civi.setup.installDatabase", Object(Civi\Core\UnoptimizedEventDispatcher))
#37 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:16), "civi.setup.installDatabase", Object(Civi\Setup\Event\InstallDatabaseEvent))
#38 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Setup\Event\InstallDatabaseEvent), "civi.setup.installDatabase")
#39 /var/www/html/core/setup/src/Setup.php(230): Civi\Core\CiviEventDispatcher->dispatch("civi.setup.installDatabase", Object(Civi\Setup\Event\InstallDatabaseEvent))
#40 /var/www/html/core/setup/src/Setup/UI/SetupController.php(119): Civi\Setup->installDatabase()
#41 [internal function](): Civi\Setup\UI\SetupController->runInstall("POST", (Array:2))
#42 /var/www/html/core/setup/src/Setup/UI/SetupController.php(65): call_user_func((Array:2), "POST", (Array:2))
#43 /var/www/html/core/setup/src/Setup/BasicRunner.php(21): Civi\Setup\UI\SetupController->run("POST", (Array:2))
#44 /var/www/html/core/Civi/Standalone/WebEntrypoint.php(106): Civi\Setup\BasicRunner::run(Object(Civi\Setup\UI\SetupController))
#45 /var/www/html/core/Civi/Standalone/WebEntrypoint.php(23): Civi\Standalone\WebEntrypoint::installer()
#46 /var/www/html/index.php(35): Civi\Standalone\WebEntrypoint::index()
#47 {main}
2025-02-03 13:03:36+0000 [notice] Created new user "admin" (user ID #1, contact ID #2) with 'admin' role and specified password
2025-02-03 13:03:46+0000 [debug] $API Request Authorization failed = #0 /var/www/html/core/Civi/API/Kernel.php(148): CRM_Core_Error::backtrace("API Request Authorization failed", TRUE)
#1 /var/www/html/core/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
#2 /var/www/html/core/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php(221): Civi\Api4\Generic\AbstractAction->execute()
#3 /var/www/html/core/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php(197): Civi\Api4\Event\Subscriber\ImportSubscriber::getImportForms()
#4 [internal function](): Civi\Api4\Event\Subscriber\ImportSubscriber::on_civi_afform_get(Object(Civi\Core\Event\GenericHookEvent), "civi.afform.get", Object(Civi\Core\UnoptimizedEventDispatcher))
#5 /var/www/html/core/Civi/Core/Event/ServiceListener.php(53): call_user_func_array((Array:2), (Array:3))
#6 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(230): Civi\Core\Event\ServiceListener->__invoke(Object(Civi\Core\Event\GenericHookEvent), "civi.afform.get", Object(Civi\Core\UnoptimizedEventDispatcher))
#7 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:2), "civi.afform.get", Object(Civi\Core\Event\GenericHookEvent))
#8 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Core\Event\GenericHookEvent), "civi.afform.get")
#9 /var/www/html/core/ext/afform/core/Civi/Api4/Action/Afform/Get.php(41): Civi\Core\CiviEventDispatcher->dispatch("civi.afform.get", Object(Civi\Core\Event\GenericHookEvent))
#10 /var/www/html/core/Civi/Api4/Generic/BasicGetAction.php(51): Civi\Api4\Action\Afform\Get->getRecords()
#11 /var/www/html/core/Civi/Api4/Provider/ActionObjectProvider.php(91): Civi\Api4\Generic\BasicGetAction->_run(Object(Civi\Api4\Generic\Result))
#12 /var/www/html/core/Civi/API/Kernel.php(153): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Action\Afform\Get))
#13 /var/www/html/core/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Action\Afform\Get))
#14 /var/www/html/core/ext/afform/core/afform.php(413): Civi\Api4\Generic\AbstractAction->execute()
#15 /var/www/html/core/CRM/Utils/Hook.php(272): afform_civicrm_alterMenu((Array:472))
#16 /var/www/html/core/CRM/Utils/Hook.php(194): CRM_Utils_Hook->runHooks((Array:13), "civicrm_alterMenu", 1, (Array:472), NULL, NULL, NULL, NULL, NULL)
#17 /var/www/html/core/CRM/Utils/Hook/Standalone.php(43): CRM_Utils_Hook->commonInvoke(1, (Array:472), NULL, NULL, NULL, NULL, NULL, "civicrm_alterMenu", "")
#18 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(310): CRM_Utils_Hook_Standalone->invokeViaUF(1, (Array:472), NULL, NULL, NULL, NULL, NULL, "civicrm_alterMenu")
#19 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(230): Civi\Core\CiviEventDispatcher::delegateToUF(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_alterMenu", Object(Civi\Core\UnoptimizedEventDispatcher))
#20 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:5), "hook_civicrm_alterMenu", Object(Civi\Core\Event\GenericHookEvent))
#21 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_alterMenu")
#22 /var/www/html/core/CRM/Utils/Hook.php(168): Civi\Core\CiviEventDispatcher->dispatch("hook_civicrm_alterMenu", Object(Civi\Core\Event\GenericHookEvent))
#23 /var/www/html/core/CRM/Utils/Hook.php(689): CRM_Utils_Hook->invoke((Array:1), (Array:472), NULL, NULL, NULL, NULL, NULL, "civicrm_alterMenu")
#24 /var/www/html/core/CRM/Core/Menu.php(78): CRM_Utils_Hook::alterMenu((Array:472))
#25 /var/www/html/core/CRM/Core/Menu.php(180): CRM_Core_Menu::xmlItems(FALSE)
#26 /var/www/html/core/Civi/Api4/Route.php(35): CRM_Core_Menu::items()
#27 [internal function](): Civi\Api4\Route::Civi\Api4\{closure}(Object(Civi\Api4\Generic\BasicGetAction))
#28 /var/www/html/core/Civi/Api4/Generic/BasicGetAction.php(92): call_user_func(Object(Closure), Object(Civi\Api4\Generic\BasicGetAction))
#29 /var/www/html/core/Civi/Api4/Generic/BasicGetAction.php(51): Civi\Api4\Generic\BasicGetAction->getRecords()
#30 /var/www/html/core/Civi/Api4/Provider/ActionObjectProvider.php(91): Civi\Api4\Generic\BasicGetAction->_run(Object(Civi\Api4\Generic\Result))
#31 /var/www/html/core/Civi/API/Kernel.php(153): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Generic\BasicGetAction))
#32 /var/www/html/core/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\BasicGetAction))
#33 /var/www/html/core/CRM/Core/Resources.php(482): Civi\Api4\Generic\AbstractAction->execute()
#34 /var/www/html/core/CRM/Core/Resources.php(464): CRM_Core_Resources::getQuickAddForms(0)
#35 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(230): CRM_Core_Resources::renderL10nJs(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_buildAsset", Object(Civi\Core\UnoptimizedEventDispatcher))
#36 /var/www/html/core/vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:6), "hook_civicrm_buildAsset", Object(Civi\Core\Event\GenericHookEvent))
#37 /var/www/html/core/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_buildAsset")
#38 /var/www/html/core/CRM/Utils/Hook.php(168): Civi\Core\CiviEventDispatcher->dispatch("hook_civicrm_buildAsset", Object(Civi\Core\Event\GenericHookEvent))
#39 /var/www/html/core/CRM/Utils/Hook.php(2790): CRM_Utils_Hook->invoke((Array:4), "crm-l10n.js", (Array:10), "application/javascript", NULL, NULL, NULL, "civicrm_buildAsset")
#40 /var/www/html/core/Civi/Core/AssetBuilder.php(226): CRM_Utils_Hook::buildAsset("crm-l10n.js", (Array:10), "application/javascript", NULL)
#41 /var/www/html/core/Civi/Core/AssetBuilder.php(198): Civi\Core\AssetBuilder->render("crm-l10n.js", (Array:10))
#42 /var/www/html/core/Civi/Core/AssetBuilder.php(136): Civi\Core\AssetBuilder->build("crm-l10n.js", (Array:10))
#43 /var/www/html/core/CRM/Core/Resources/Common.php(213): Civi\Core\AssetBuilder->getUrl("crm-l10n.js", (Array:10))
#44 /var/www/html/core/CRM/Core/Resources/Common.php(128): CRM_Core_Resources_Common::coreResourceList("html-header")
#45 /var/www/html/private/cache/CachedCiviContainer.d894c6514532e3fb48f17df5bcea7ccf.php(1276): CRM_Core_Resources_Common::createFullBundle("coreResources")
#46 /var/www/html/core/vendor/symfony/dependency-injection/Container.php(240): CachedCiviContainer_d894c6514532e3fb48f17df5bcea7ccf->getBundle_CoreResourcesService()
#47 /var/www/html/core/vendor/symfony/dependency-injection/Container.php(220): Symfony\Component\DependencyInjection\Container->make("bundle.coreResources", 1)
#48 /var/www/html/core/Civi.php(175): Symfony\Component\DependencyInjection\Container->get("bundle.coreResources")
#49 /var/www/html/core/CRM/Core/Resources.php(214): Civi::service("bundle.coreResources")
#50 /var/www/html/core/CRM/Core/Resources.php(383): CRM_Core_Resources->addBundle("coreResources")
#51 /var/www/html/core/Civi/Standalone/WebEntrypoint.php(54): CRM_Core_Resources->addCoreResources()
#52 /var/www/html/core/Civi/Standalone/WebEntrypoint.php(20): Civi\Standalone\WebEntrypoint::invoke()
#53 /var/www/html/index.php(35): Civi\Standalone\WebEntrypoint::index()
#54 {main}
Expected behaviour
A clean CiviCRM log without errors.
Environment information
- CiviCRM: Standalone / 5.81.1
- PHP: 8.3
- CMS: Standalone
- Database: MySQL 8.0.41
- Web Server: Apache 2.4.52 (Ubuntu)
Comments
Just to verfiy. MySQL user "civicrm" has sufficient permissions:
mysql> SHOW GRANTS FOR 'civicrm'@'localhost';
+--------------------------------------------------------------+
| Grants for civicrm@localhost |
+--------------------------------------------------------------+
| GRANT SUPER ON *.* TO `civicrm`@`localhost` |
| GRANT ALL PRIVILEGES ON `civicrm`.* TO `civicrm`@`localhost` |
+--------------------------------------------------------------+
2 rows in set (0.00 sec)