Problem/Motivation
After installing Drupal 12.0.0-beta2 with the Standard profile, visiting /admin/welcome shows "The website encountered an unexpected error":
BadMethodCallException: The "\Drupal\standard\Controller\WelcomeController::access" method is not callable as a _custom_access callback in route "/admin/welcome"
The Standard profile sets front: /admin/welcome in core/profiles/standard/config/install/system.site.yml. This was added by #3590882, so the first page view of a fresh site requests this route.
In 12.0.0-beta2 the web installer has no profile selection screen. The SelectProfileForm class no longer exists, and when no profile can be selected automatically, install_select_profile() falls back to the Standard profile. So a site installed in the browser always gets Standard, and with it this route.
Steps to reproduce
1. Create a new Drupal 12.0.0-beta2 site. [Say how: Composer command or hosting platform.]
2. Open the site in a browser and run the web installer at /core/install.php. The steps are Choose language, Verify requirements, Set up database, Install site and Configure site. There is no "Choose profile" screen, and the Standard profile is installed.
3. Finish the "Configure site" step.
4. Request /admin/welcome without clearing caches. [Say when: right after the installer finished, or later, and whether the first request already failed.]
Workaround
Clear the caches with drush cr, or go to Configuration > Development > Performance > Clear all caches. The page then works.
Environment
- Drupal 12.0.0-beta2
- PHP 8.5.12
- MySQL 8.4
- Installed with the web installer at /core/install.php
| Comment | File | Size | Author |
|---|---|---|---|
| Screenshot 2026-10-30 at 2.43.13 PM.png | 94.04 KB | roshnykunjappan |
Comments
Comment #2
roshnykunjappan commentedComment #3
roshnykunjappan commentedComment #4
cilefen commentedI am unable to reproduce this. I followed the steps as written. There must be additional steps to reproduce.
Comment #5
ghost of drupal pastWhile there have been significant efforts (thanks @catch) to decrease the number of container rebuilds during install it never went to zero. By this I mean it's real odd if a cache rebuild fixes this because most certainly install does one of those.