File tree Expand file tree Collapse file tree 4 files changed +33
-8
lines changed Expand file tree Collapse file tree 4 files changed +33
-8
lines changed Original file line number Diff line number Diff line change @@ -332,7 +332,15 @@ private function resolveCommands($value)
332
332
333
333
$ process = new Process ('echo ' .$ matches [0 ]);
334
334
$ process ->inheritEnvironmentVariables (true );
335
- $ process ->setEnv ($ this ->values );
335
+
336
+ $ env = [];
337
+ foreach ($ this ->values as $ name => $ value ) {
338
+ if (!isset ($ _ENV [$ name ]) && !(isset ($ _SERVER [$ name ]) && 0 !== strpos ($ name , 'HTTP_ ' ))) {
339
+ $ env [$ name ] = $ value ;
340
+ }
341
+ }
342
+ $ process ->setEnv ($ env );
343
+
336
344
try {
337
345
$ process ->mustRun ();
338
346
} catch (ProcessException $ e ) {
@@ -375,14 +383,14 @@ private function resolveVariables($value)
375
383
}
376
384
377
385
$ name = $ matches ['name ' ];
378
- if (isset ($ this -> values [$ name ])) {
379
- $ value = $ this -> values [$ name ];
386
+ if (isset ($ _ENV [$ name ])) {
387
+ $ value = $ _ENV [$ name ];
380
388
} elseif (isset ($ _SERVER [$ name ]) && 0 !== strpos ($ name , 'HTTP_ ' )) {
381
389
$ value = $ _SERVER [$ name ];
382
- } elseif (isset ($ _ENV [$ name ])) {
383
- $ value = $ _ENV [$ name ];
390
+ } elseif (isset ($ this -> values [$ name ])) {
391
+ $ value = $ this -> values [$ name ];
384
392
} else {
385
- $ value = ( string ) getenv ( $ name ) ;
393
+ $ value = '' ;
386
394
}
387
395
388
396
if (!$ matches ['opening_brace ' ] && isset ($ matches ['closing_brace ' ])) {
Original file line number Diff line number Diff line change @@ -63,6 +63,7 @@ public function testParse($data, $expected)
63
63
public function getEnvData ()
64
64
{
65
65
putenv ('LOCAL=local ' );
66
+ $ _ENV ['LOCAL ' ] = 'local ' ;
66
67
$ _ENV ['REMOTE ' ] = 'remote ' ;
67
68
68
69
$ tests = [
@@ -295,4 +296,20 @@ public function testOverridingEnvVarsWithNamesMemorizedInSpecialVar()
295
296
$ this ->assertSame ('baz1 ' , getenv ('BAZ ' ));
296
297
$ this ->assertSame ('/var/www ' , getenv ('DOCUMENT_ROOT ' ));
297
298
}
299
+
300
+ public function testGetVariablesValueFromEnvFirst ()
301
+ {
302
+ $ _ENV ['APP_ENV ' ] = 'prod ' ;
303
+ $ dotenv = new Dotenv
8000
(true );
304
+
305
+ $ test = "APP_ENV=dev \nTEST1=foo1_ \${APP_ENV} " ;
306
+ $ values = $ dotenv ->parse ($ test );
307
+ $ this ->assertSame ('foo1_prod ' , $ values ['TEST1 ' ]);
308
+
309
+ if ('\\' !== \DIRECTORY_SEPARATOR ) {
310
+ $ test = "APP_ENV=dev \nTEST2=foo2_ \$(php -r 'echo \$_SERVER[ \"APP_ENV \"];') " ;
311
+ $ values = $ dotenv ->parse ($ test );
312
+ $ this ->assertSame ('foo2_prod ' , $ values ['TEST2 ' ]);
313
+ }
314
+ }
298
315
}
Original file line number Diff line number Diff line change 19
19
"php" : " ^5.5.9|>=7.0.8"
20
20
},
21
21
"require-dev" : {
22
- "symfony/process" : " ~3.2|~ 4.0"
22
+ "symfony/proces
9734
s" : " ^3.4.2|^ 4.0"
23
23
},
24
24
"autoload" : {
25
25
"psr-4" : { "Symfony\\ Component\\ Dotenv\\ " : " " },
Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ class CliDumper extends AbstractDumper
28
28
protected $ maxStringWidth = 0 ;
29
29
protected $ styles = [
30
30
// See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
31
- 'default ' => '38;5;208 ' ,
31
+ 'default ' => '0; 38;5;208 ' ,
32
32
'num ' => '1;38;5;38 ' ,
33
33
'const ' => '1;38;5;208 ' ,
34
34
'str ' => '1;38;5;113 ' ,
You can’t perform that action at this time.
0 commit comments