Installation¶
A single script does the installation: installer_de_patch.sh. It detects
on its own whether to create a new Drupal CMS or to prepare an existing
project.
You need a command line with PHP, Composer, git and curl – the same environment as for Drupal CMS itself.
New Drupal CMS in German¶
Run the script in an empty directory:
bash
curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash
The script downloads Drupal CMS via composer create-project into the
subfolder cms/ and prepares the installer. To use a different folder name
(with curl | bash this needs the -s -- syntax):
bash
curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash -s -- drupalcms
Then open the site in your browser, choose German as the language and follow the installer.
Don't reload during installation
Don't reload the page while the installation is running. Drupal may
otherwise cache an unfinished state, and the finished site shows a 500
error. drush cr fixes that.
Existing Drupal CMS project¶
Run the script in the root of your project, where composer.json and web/
live – not in the web/ folder itself:
bash
curl -sSL https://git.drupalcode.org/project/dcgi/-/raw/1.0.x/installer_de_patch.sh | bash
The script detects the existing installation via
web/profiles/contrib/drupal_cms_installer and wires the German installer in
right there.
If the site is already fully installed, this has no visible effect: the
installer only applies the next time core/install.php runs. The script
checks whether a site is installed with drush status. If the database is
emptied later (e.g. with drush sql:drop), it wires the installer in again.
Clean up after installation¶
Run the script a second time in the same directory once the installation is finished. It detects that on its own, removes the German installer again and resets the Drupal CMS installer to its original state. The finished site doesn't need it any more.
Good to know¶
No entry in composer.json. The installer is not added with
composer require but placed in
web/profiles/contrib/drupal_cms_installer_de with git clone, where Drupal
finds it automatically. composer.json and composer.lock stay unchanged.
Only the add-on modules from drupal.org go into composer.json as usual.
Run it again after composer update. Composer does not run the scripts
of packages itself. An update of Drupal CMS can therefore overwrite the
changes to the installer. Simply run installer_de_patch.sh again. Every
change detects whether it has already been applied.
PHP memory. The web installer runs each installation step inside PHP's
memory_limit. The large site templates (Summit, Varbase, The Rightup,
Educare, Horizon Aid) need more than the common default of 128 MB; with it, the
installer stops halfway with an "AJAX HTTP error". Set memory_limit to at
least 512M for PHP-FPM or Apache, then restart PHP. Installations with Drush
are not affected, because PHP on the command line has no limit.
Twig 3.30. Twig 3.30.0 (released 2026-09-25) is incompatible with Drupal
core 11.4.7: the very first installation page fails with
EscaperRuntime::escape(): Argument #4 ($autoescape) must be of type bool, null given.
Drupal core 11.4.8 fixed this. Only with an older core does the script
restrict Twig to a compatible version automatically. After updating to
11.4.8, remove the restriction with composer remove twig/twig.
Testing a branch or a local clone. The installer's source can be overridden:
bash
INSTALLER_DE_REPO=file:///path/to/clone INSTALLER_DE_BRANCH=my-branch bash installer_de_patch.sh