I tried a migration from D7 to 10.4.1 and also found I was denied access to /admin/config and /admin/structure. The menus were a complete mess with many duplicates. Thanks to the earlier tip about duplicate menu items, the following solution worked for me.
Before migration, disable the Menu module at /admin/modules/uninstall
Yes you will lose custom menu settings in the migration, but compared to an unsolvable permissions and horrific menu mess, it's a much easier fix.
This certainly left a normal and tidy Admin menu after migration, but other Users were not migrated with their respective permissions. That's a small issue for me with only three Users, but if you have thousands...
This needs further investigation.
Sorry for the delay to test this.
I went through the steps above again on two different sites, this time deleting core and vendor folders before unzipping the replacement folders from D10-4-1. This has restored my access to /admin/modules
after the update.
There is a lesson here. Thanks cilefen → for good advice.
I would wait a day or two before confirming that this is the appropriate solution and that there really is no bug to fix.
Yes that's good advice. I will try this later when time permits, and report back.
Just to clarify, are you asking if I completely deleted the core folder before unzipping its replacement? The answer is no.
I just tried to update another site in my care, and the same process of disabling Update Manager before updating core does not solve this problem. After updating to 10.4.1 and re-enabling Update Manager, the module now does not function properly, and the Status page reports "There was a problem checking available updates for Drupal."
Initially I could not access /admin/modules while another module reported an issue.
Here is the backtrace from dblog (I replaced the real username).
#0 /home/USERNAME/public_html/core/lib/Drupal/Core/Menu/LocalActionDefault.php(87): Drupal\Core\Routing\RouteProvider->getRouteByName()
#1 /home/USERNAME/public_html/core/lib/Drupal/Core/Menu/LocalActionManager.php(192): Drupal\Core\Menu\LocalActionDefault->getRouteParameters()
#2 /home/USERNAME/public_html/core/lib/Drupal/Core/Menu/Plugin/Block/LocalActionsBlock.php(81): Drupal\Core\Menu\LocalActionManager->getActionsForRoute()
#3 /home/USERNAME/public_html/core/modules/block/src/BlockViewBuilder.php(171): Drupal\Core\Menu\Plugin\Block\LocalActionsBlock->build()
#4 [internal function]: Drupal\block\BlockViewBuilder::preRender()
#5 /home/USERNAME/public_html/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array()
#6 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback()
#7 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback()
#8 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender()
#9 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
#10 /home/USERNAME/public_html/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render()
#11 /home/USERNAME/public_html/sites/default/files/php/twig/677f3b2905e33_page.html.twig_HevebSSWvj_YMkP6bzItlmV5T/C4HR6KJGBX2ZQrQLIInJDwsmOUejLXYcJs65rn7DzSs.php(90): Drupal\Core\Template\TwigExtension->escapeFilter()
#12 /home/USERNAME/public_html/vendor/twig/twig/src/Template.php(387): __TwigTemplate_81b0ab569c712ea391a234acaf65b4d3->doDisplay()
#13 /home/USERNAME/public_html/vendor/twig/twig/src/Template.php(343): Twig\Template->yield()
#14 /home/USERNAME/public_html/vendor/twig/twig/src/Template.php(358): Twig\Template->display()
#15 /home/USERNAME/public_html/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render()
#16 /home/USERNAME/public_html/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render()
#17 /home/USERNAME/public_html/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template()
#18 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render()
#19 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
#20 /home/USERNAME/public_html/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render()
#21 /home/USERNAME/public_html/sites/default/files/php/twig/677f3b2905e33_html.html.twig_ktLjio73ltilyWZlwSFGF2Yj1/T2oyOEYiwSqcrXxuQs1NTO8C8-to_gVsEQqf4lQL0xk.php(91): Drupal\Core\Template\TwigExtension->escapeFilter()
#22 /home/USERNAME/public_html/vendor/twig/twig/src/Template.php(387): __TwigTemplate_f8be08f2b9f4a03655e5da5ae9683746->doDisplay()
#23 /home/USERNAME/public_html/vendor/twig/twig/src/Template.php(343): Twig\Template->yield()
#24 /home/USERNAME/public_html/vendor/twig/twig/src/Template.php(358): Twig\Template->display()
#25 /home/USERNAME/public_html/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render()
#26 /home/USERNAME/public_html/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render()
#27 /home/USERNAME/public_html/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template()
#28 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render()
#29 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender()
#30 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(158): Drupal\Core\Render\Renderer->render()
#31 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
#32 /home/USERNAME/public_html/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(153): Drupal\Core\Render\Renderer->executeInRenderContext()
#33 /home/USERNAME/public_html/core/lib/Drupal/Core/EventSubscriber/MainContentViewSubscriber.php(90): Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse()
#34 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray()
#35 /home/USERNAME/public_html/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func()
#36 /home/USERNAME/public_html/vendor/symfony/http-kernel/HttpKernel.php(186): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch()
#37 /home/USERNAME/public_html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
#38 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle()
#39 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
#40 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
#41 /home/USERNAME/public_html/core/modules/page_cache/src/StackMiddleware/PageCache.php(116): Drupal\Core\StackMiddleware\ContentLength->handle()
#42 /home/USERNAME/public_html/core/modules/page_cache/src/StackMiddleware/PageCache.php(90): Drupal\page_cache\StackMiddleware\PageCache->pass()
#43 /home/USERNAME/public_html/core/modules/ban/src/BanMiddleware.php(50): Drupal\page_cache\StackMiddleware\PageCache->handle()
#44 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\ban\BanMiddleware->handle()
#45 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
#46 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
#47 /home/USERNAME/public_html/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle()
#48 /home/USERNAME/public_html/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
#49 /home/USERNAME/public_html/index.php(19): Drupal\Core\DrupalKernel->handle()
#50 {main}
As I was able to restore my site to 10.3.9 from the backup, it was an easy matter to uninstall Update Manager before updating core to 10.4.1.
I have now updated core and re-enabled Update Manager, and it's smiles all round.
Thank you tolstoydotcom and jaypan for your help.
You'll be interest to know that I had no problems when I first tested the update to 10.4.1 on my MAMP localhost.
Meanwhile I will try again to find out how to install Composer on my live site and use it via Terminal on my Mac.
Symfony\Component\Routing\Exception\RouteNotFoundException: Route "update.module_install" does not exist. in Drupal\Core\Routing\RouteProvider->getRouteByName() (line 211 of /home/USERNAME/public_html/core/lib/Drupal/Core/Routing/RouteProvider.php).
I've been successfully managing my site manually for years, and I've searched many times for a comprehensive page on how to install and use Composer to manage a Drupal site in a remote hosted Linux web environment. I would have started using Composer years ago if that info was out there and/or what I found was relevant. I'm not a novice, but this has been a hurdle I have never been able to jump.
Meanwhile, after upgrading to 10.4.1 I wasn't expecting the white screen of death when visiting /admin/modules/
I had no choice but to wind back to 10.3.9 and I will live with that for a while I contemplate my future with Drupal.
So why is the EXTEND link still available in the Admin menu if the intention is to render it useless?
Will version 2.1.3 fix this issue for those of us who have difficulty applying manual patches?