Upgrades to Drupal versions have been significantly more efficient since Drupal 8 (symfony framework), meaning that site rebuilds are mostly not required.
List of Modifications to Platform Specifications:
- Symfony: Ensure that you have symfony 7
- PHP: PHP 8.3 installed with the zlib extension enabled is required for PHP Drupal 11. This extension will often be enabled by default on most platforms.
- Drush: Ensure that you upgrade to Drush 13 if you use it.
- New specifications for Databases. The following specifications must be met by the database drivers that Drupal 11 supports:
-
- MariaDB 10.6 is required for the MariaDB database driver.
-
- The SQLite 3.45 version with the json1 extension is required for the SQLite database driver.
-
- PostgreSQL 16 is required for the PostgreSQL database driver.
-
- MySQL 8.0 is required for the MySQL database driver.
-
- The syntax unique to MySQL 8 and MariaDB 10.6 is not yet directly used by Drupal 11, although it will be in later iterations. There is a MySQL 5.7/MariaDB 10.3 backport module that you may use in the meantime if you are unable to update to these versions.
-
- Web Server:
-
- Apache: The most popular Drupal web server is Apache. Drupal requires at least Apache 2.4.7 or greater.
-
- IIS Support Discontinued: Drupal 11 no longer supports Microsoft Internet Information Services (IIS). Websites currently using IIS should migrate to a supported web server.
-
- Web.config File Removed: Please note that Drupal 11 does not include a web.config file. If you encounter any issues, report them to address compatibility problems with web servers other than IIS.
For Users of Drupal 10
All core changes added before 10.3.0 have been deleted from version 11, thus Drupal sites running 10.2.x or older must first update to 10.3.0 or later. Before upgrading to the next major release, websites should generally upgrade to the most recent version of their current major branch. You must be on Drupal 10.3 in order to receive correct upgrade progress information, as the tools only enable code compatibility verification towards the next major version.
Install Upgrade Status
To facilitate the transition to Drupal 11, it is a good idea to install Upgrade Status on your development site once you are on 10.3.0 or later.
Upgrade Status provides you with a checklist of potential next actions, which helps “gamify” the process to some extent.
This module may be used with Drush’s command line interface or the Drupal back-end user interface. Upgrade Status looks at your setup to assist you in updating your PHP version, database server, and other components to Drupal 11 compatibility. It finds extensions that aren’t being utilised on the website and probably can be taken off. It checks your contributed modules for instances of deprecated code and compatibility problems. It will assist you in updating them when Drupal.org releases suitable versions.
It directs you to work together on Drupal.org problems to make the projects compliant when the changes are not yet available. In order to greatly speed up upgrading custom code, it will also offer instructions on where to utilise Drupal Rector.
Use Drupal Rector
To assist with resolving compatibility concerns, Drupal Rector will automatically produce patches. Compared to manually initiating the code updates, this is more straightforward and easy. Drupal Rector can help you get started because it covers the most popular deprecated APIs. The module will point you to material on the necessary adjustments, but any lingering problems found by Upgrade Status will need to be resolved manually.
Verify Compatibility of Contributed Projects
The Project Update Bot assists contributed projects in becoming compatible. If a project you’ve contributed isn’t yet compatible with Drupal 11, Upgrade Status can help you correct it. Update the project on your website in the interim by using the Lenient Composer plug-in. If there are uncommitted patches for that project, you may use cweagans/composer-patches to apply them where needed and let the patch authors and module maintainers know how you found them.
As a consequence, even if its extensions are compatible with Drupal 11, the website will still function on Drupal 10. After that, updating Drupal core is all that is required.
Furthermore, Acquia offers some rather comprehensive information on the Drupal 11 project deprecation status dashboard’s community module readiness.
Plan for files managed by the site owner
The Statistics module is now a contributed module, and its support has been removed from the default.htaccess file.
Fix the Outdated Custom Code
Once you have your Upgrade Status report, you will need to review your custom code, just like you would with any submitted code. In reality, any kind of trial run or genuine transfer to Drupal 11 cannot happen until all Drupal application code has been fixed, even if you are lucky enough to only need to make a few changes.
In many cases, the depreciations simply require minor adjustments (e.g., replacing one function or method with another).
However, it’s crucial to recognize that these changes are not to be taken lightly. If not carefully handled and validated, even simple word substitutions might cause problems for your website.
Preparing for a Smooth Drupal 11 Upgrade
It’s common for Drupal upgrades to encounter initial challenges. To minimize risks, always perform these updates in a controlled environment like a local sandbox or cloud IDE. This way, if something goes wrong, you won’t jeopardize your live site.
Testing with composer update –dry-run
Before proceeding with the actual update, use composer update –dry-run to simulate the process without making any changes. This will help you identify potential conflicts or issues. Once you’ve successfully run a dry run without errors, you can proceed with the core composer upgrade.
Resolving Upgrade Issues:
If you’re still unable to upgrade to Drupal 11 using composer update drupal/core –with-all-dependencies, try running composer why-not drupal/core 11.0. This command will provide valuable information about any dependencies or conflicts preventing the upgrade.
Backup Before Deployment
Before deploying any changes to your production environment, always create a backup of your code and database. This ensures you have a safety net in case something goes wrong during the update process. Even if you’ve successfully tested the upgrade in other environments, it’s still a good practice to have a backup in place.
Conclusion
Drupal has significantly streamlined its upgrade process since the introduction of Drupal 8. This means that site rebuilds are becoming less frequent, making the transition to newer versions more efficient. In this blog post, we’ve delved into the specific steps involved in upgrading from Drupal 10 to 11 and outlined the essential platform specifications.
What’s Next?
In the second part of this series, we’ll turn our attention to users of Drupal 9, 8, and 7. We’ll explore the upgrade paths available to these users and provide detailed guidance on how to seamlessly migrate to Drupal 11.
By the end of this series, you will be equipped with the knowledge and tools to confidently upgrade your Drupal website to the latest version 11.