@@ -340,7 +340,7 @@ public function start(callable $callback = null, array $env = [])
340
340
341
341
$ envPairs = [];
342
342
foreach ($ env as $ k => $ v ) {
343
- if (false !== $ v ) {
343
+ if (false !== $ v && ' argc ' !== $ k && ' argv ' !== $ k ) {
344
344
$ envPairs [] = $ k .'= ' .$ v ;
345
345
}
346
346
}
@@ -1171,25 +1171,12 @@ public function getEnv()
1171
1171
/**
1172
1172
* Sets the environment variables.
1173
1173
*
1174
- * Each environment variable value should be a string.
1175
- * If it is an array, the variable is ignored.
1176
- * If it is false or null, it will be removed when
1177
- * env vars are otherwise inherited.
1178
- *
1179
- * That happens in PHP when 'argv' is registered into
1180
- * the $_ENV array for instance.
1181
- *
1182
- * @param array $env The new environment variables
1174
+ * @param array<string|\Stringable> $env The new environment variables
1183
1175
*
1184
1176
* @return $this
1185
1177
*/
1186
1178
public function setEnv (array $ env )
1187
1179
{
1188
- // Process can not handle env values that are arrays
1189
- $ env = array_filter ($ env , function ($ value ) {
1190
- return !\is_array ($ value );
1191
- });
1192
-
1193
1180
$ this ->env = $ env ;
1194
1181
1195
1182
return $ this ;
@@ -1673,14 +1660,7 @@ private function getDefaultEnv(): array
1673
1660
{
1674
1661
$ env = getenv ();
1675
1662
$ env = array_intersect_key ($ env , $ _SERVER ) ?: $ env ;
1676
- unset($ env ['argc ' ], $ env ['argv ' ]);
1677
-
1678
- foreach ($ _ENV as $ k => $ v ) {
1679
- if (\is_string ($ v )) {
1680
- $ env [$ k ] = $ v ;
1681
- }
1682
- }
1683
1663
1684
- return $ env ;
1664
+ return $ _ENV + $ env ;
1685
1665
}
1686
1666
}
0 commit comments