Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Dotenv] search variable values in ENV first then env file #32943

Conversation

@soufianZantar
Copy link
Contributor

soufianZantar commented Aug 5, 2019

Q A
Branch? 4.4
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #32595
License MIT
Doc PR symfony/symfony-docs#...

I think we must searhing the value of variables in $_ENV before the .env file to fix this issues.
before this fix Parse method will return the value in .env file and not the value passed in this command composer dump-env prod .

the issue:

In my .env file, I have a variable TEST that depends on the APP_ENV variable like this:

# .env file

###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=2eb810c79fba0dd5c029a2fa53bfdb51
###< symfony/framework-bundle ###

TEST=foo_${APP_ENV}

I run composer dump-env dev command to generate my .env.locale.php, everything works fine, the value of my variable TEST is correct.

// .env.locale.php

return array (
  'APP_ENV' => 'dev',
  'TEST' => 'foo_dev',
  'APP_SECRET' => '2eb810c79fba0dd5c029a2fa53bfdb51',
);

Then I run the same command with prod environment (composer dump-env prod), the value of TEST is wrong (it is same as for dev)

// .env.locale.php

return array (
  'APP_ENV' => 'prod',
  'TEST' => 'foo_dev',
  'APP_SECRET' => '2eb810c79fba0dd5c029a2fa53bfdb51',
);
@soufianZantar soufianZantar force-pushed the soufianZantar:dotenv/fix-variable-values-in-command branch from a4b0dfc to d83374d Aug 5, 2019
@xabbuh xabbuh added this to the 3.4 milestone Aug 5, 2019
@nicolas-grekas nicolas-grekas changed the base branch from master to 3.4 Oct 8, 2019
@nicolas-grekas nicolas-grekas changed the title [Dotenv]: search variable values in _ENV first then env file [Dotenv] search variable values in ENV first then env file Oct 8, 2019
@nicolas-grekas nicolas-grekas force-pushed the soufianZantar:dotenv/fix-variable-values-in-command branch 4 times, most recently from bafde61 to 79561a7 Oct 8, 2019
Copy link
Member

nicolas-grekas left a comment

(failures unrelated)

@nicolas-grekas nicolas-grekas force-pushed the soufianZantar:dotenv/fix-variable-values-in-command branch from 79561a7 to cd0e9ef Oct 11, 2019
@nicolas-grekas nicolas-grekas force-pushed the soufianZantar:dotenv/fix-variable-values-in-command branch from cd0e9ef to 3018041 Oct 11, 2019
@nicolas-grekas

This comment has been minimized.

Copy link
Member

nicolas-grekas commented Oct 11, 2019

Thank you @soufianZantar.

nicolas-grekas added a commit that referenced this pull request Oct 11, 2019
… (soufianZantar)

This PR was merged into the 3.4 branch.

Discussion
----------

[Dotenv] search variable values in ENV first then env file

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #32595
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/roadmap):
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too).
 - Features and deprecations must be submitted against branch 4.4.
 - Legacy code removals go to the master branch.
-->

I think we must searhing the value of variables in $_ENV before the .env file to fix this issues.
before this fix Parse method will return the value in .env file and not the value passed in this command `composer dump-env prod `.

**the issue:**

In my .env file, I have a variable TEST that depends on the APP_ENV variable like this:

```
# .env file

###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=2eb810c79fba0dd5c029a2fa53bfdb51
###< symfony/framework-bundle ###

TEST=foo_${APP_ENV}

```
I run composer dump-env dev command to generate my .env.locale.php, everything works fine, the value of my variable TEST is correct.

```
// .env.locale.php

return array (
  'APP_ENV' => 'dev',
  'TEST' => 'foo_dev',
  'APP_SECRET' => '2eb810c79fba0dd5c029a2fa53bfdb51',
);
```
Then I run the same command with prod environment (composer dump-env prod), the value of TEST is wrong (it is same as for dev)

```
// .env.locale.php

return array (
  'APP_ENV' => 'prod',
  'TEST' => 'foo_dev',
  'APP_SECRET' => '2eb810c79fba0dd5c029a2fa53bfdb51',
);
```

Commits
-------

3018041 [Dotenv] search variable values in ENV first then env file
@nicolas-grekas nicolas-grekas merged commit 3018041 into symfony:3.4 Oct 11, 2019
1 of 3 checks passed
1 of 3 checks passed
continuous-integration/appveyor/pr Waiting for AppVeyor build to complete
Details
continuous-integration/travis-ci/pr The Travis CI build is in progress
Details
fabbot.io Your code looks good.
Details
This was referenced Nov 1, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.