@@ -62,9 +62,54 @@ The ``load()`` method never overwrites existing environment variables. Use the
62
62
// ...
63
63
$dotenv->overload(__DIR__.'/.env');
64
64
65
+ As you're working with the Dotenv component you'll notice that you might want
66
+ to have different files depending on the environment you're working in. Typically
67
+ this happens for local development or Continuous Integration where you might
68
+ want to have different files for your ``test `` and ``dev `` environments.
69
+
70
+ You can use ``Dotenv::loadEnv() `` to ease this process::
71
+
72
+ use Symfony\Component\Dotenv\Dotenv;
73
+
74
+ $dotenv = new Dotenv();
75
+ $dotenv->loadEnv(__DIR__.'/.env');
76
+
77
+ The Dotenv component will then look for the correct ``.env `` file to load
78
+ in the following order whereas the files loaded later override the variables
79
+ defined in previously loaded files:
80
+
81
+ #. If ``.env `` exists, it is loaded first. In case there's no ``.env `` file but a
82
+ ``.env.dist ``, this one will be loaded instead.
83
+ #. If one of the previously mentioned files contains the ``APP_ENV `` variable, the
84
+ variable is populated and used to load environment-specific files hereafter. If
85
+ ``APP_ENV `` is not defined in either of the previously mentioned files, ``dev `` is
86
+ assumed for ``APP_ENV `` and populated by default.
87
+ #. If there's a ``.env.local `` representing general local environment variables it's loaded now.
88
+ #. If there's a ``.env.$env.local `` file, this one is loaded. Otherwise, it falls
89
+ back to ``.env.$env ``.
90
+
91
+ This might look complicated at first glance but it gives you the opportunity to commit
92
+ multiple environment-specific files that can then be adjusted to your local environment
93
+ easily. Given you commit ``.env ``, ``.env.test `` and ``.env.dev `` to represent different
94
+ configuration settings for your environments, each of them can be adjusted by using
95
+ ``.env.local ``, ``.env.test.local `` and ``.env.dev.local `` respectively.
96
+
97
+ .. note ::
98
+
99
+ ``.env.local `` is always ignored in ``test `` environment because tests should produce the
100
+ same results for everyone.
101
+
102
+ You can adjust the variable defining the environment, default environment and test
103
+ environments by passing them as additional arguments to ``Dotenv::loadEnv() ``
104
+ (see :method: `Symfony\\ Component\\ Dotenv\\ Dotenv::loadEnv ` for details).
105
+
106
+ .. versionadded :: 4.2
107
+
108
+ The ``Dotenv::loadEnv() `` method was introduced in Symfony 4.2.
109
+
65
110
You should never store a ``.env `` file in your code repository as it might
66
- contain sensitive information; create a ``.env.dist `` file with sensible
67
- defaults instead.
111
+ contain sensitive information; create a ``.env.dist `` file (or multiple
112
+ environment-specific ones as shown above) with sensible defaults instead.
68
113
69
114
.. note ::
70
115
0 commit comments