From 7ec38a6e9805d1169881e71350e115a569538c75 Mon Sep 17 00:00:00 2001 From: Thomas Schneider Date: Fri, 27 Mar 2026 14:25:58 +0100 Subject: [PATCH] =?UTF-8?q?Service=20`CleanProcess`=20hinzugef=C3=BCgt:=20?= =?UTF-8?q?Umgebung=20f=C3=BCr=20Docker-=20und=20Symfony-Variablen=20berei?= =?UTF-8?q?nigt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Service/Process/CleanProcess.php | 46 ++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/Service/Process/CleanProcess.php 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]; + } +}