Configuration files for deployment

Adobe Commerce provides configuration files that enable you to easily customize a component and create configuration types to extend default functionality. The process of deployment configuration consists of the shared and system-specific configuration for your installation. Commerce’s deployment configuration is divided between app/etc/config.php and app/etc/env.php.

  • app/etc/config.php is the shared configuration file.
    This file contains the list of installed modules, themes, and language packages; and shared configuration settings.

    Check in this file to source control and use it in your development, staging, and production systems.

  • app/etc/env.php contains settings that are specific to the installation environment.

Together, config.php and env.php are referred to as the Commerce deployment configuration because the files are created during installation and are required to start the Commerce application.

INFO
The Commerce 2 deployment configuration replaces local.xml in Magento 1.x.

Unlike other module configuration files, Commerce deployment configuration is loaded into memory when during initialization, is not merged with any other files, and cannot be extended. (config.php and env.php are merged with each other, however.)

Details about the deployment configuration

config.php and env.php are PHP files that return a multi-dimensional associative array, which is basically a hierarchical arrangement of configuration parameters and values.

On the top level of this array are configuration segments. A segment has arbitrary content (a scalar value or a nested array) distinguished by an arbitrary key—where both the key and value pair are defined by the Commerce framework.

Magento\Framework\App\DeploymentConfig merely provides access to these sections but does not allow you to extend them.

On the next hierarchy level, items in each segment are ordered according to the module sequence definition, which is obtained by merging all modules’ configuration files, except for disabled modules.

The following sections discuss the structure and contents of the deployment configuration:

  • Manage installed modules
  • System-specific configuration

Manage installed modules

The config.php file contains a list of installed modules. Adobe Commerce provides both command-line and web-based utilities to manage modules (install, uninstall, enable, disable, or upgrade).

Examples:

config.php

return array (
  'modules' =>
  array (
    'Magento_Core' => 1,
    'Magento_Store' => 1,
    'Magento_Theme' => 1,
    'Magento_Authorization' => 1,
    'Magento_Directory' => 1,
    'Magento_Backend' => 1,
    'Magento_Backup' => 1,
    'Magento_Eav' => 1,
    'Magento_Customer' => 1,
...
  ),
);

The value 1 or 0 indicates whether a module is enabled or disabled.

Disabled modules are not recognized by the Commerce application; in other words, they do not participate in merging configuration, in dependency injection, events, plug-ins, and so on. Disabled modules do not modify the storefront or Admin and do not affect routing.

The only practical difference of a disabled module and an absent module in the code base is that a disabled module is found by the autoloader, and its classes and constants are available for reuse in other code.

386822bd-e32c-40a8-81c2-ed90ad1e198c