diff --git a/src/Service/Process/CleanProcess.php b/src/Service/Process/CleanProcess.php new file mode 100644 index 0000000..e827bd0 --- /dev/null +++ b/src/Service/Process/CleanProcess.php @@ -0,0 +1,46 @@ + + * Alle Rechte vorbehalten. + */ + +namespace App\Service\Process; + +use Symfony\Component\Process\Process; + +class CleanProcess extends Process +{ + public function start(?callable $callback = null, array $env = []): void + { + // von docker compose gesetzte Umgebungsvariablen zurücksetzen + $this->parseEnvVars('DOCKER_DOTENV_VARS', $env); + + // Symfony dotenv-Variablen für den Prozess zurücksetzen + $this->parseEnvVars('SYMFONY_DOTENV_VARS', $env); + + parent::start($callback, $env); + } + + + private function parseEnvVars(string $keySelector, array &$env): void + { + $preservedKeys = []; + + if(empty(getenv($keySelector))) + { + return; + } + + // prepare DDEV-Environments + if(getenv('IS_DDEV_PROJECT')) + { + $preservedKeys += ['SSH_AUTH_SOCK']; + } + + $vars = array_fill_keys(explode(',', getenv($keySelector)), false); + + $env = [...array_diff_key($vars, array_flip($preservedKeys)), ...$env]; + } +}