Hallo Community,
Symfony empfiehlt aus Performance Gründen die Verwendung einer .env.local.php statt der .env Datei. Shopware unterstützt dieses seit der Version 6.4.8.0 (Performance Tweaks - Shopware Developer) aber leider fehlt bis zur aktuellen Version symfony/flex und damit die Möglichkeit die Datei automatisch über den Befehl „composer dump-env prod“ anzulegen. Das manuelle Erstellen ist mühsam und fehleranfällig, daher habe ich ein Mini Tool gebaut um die Datei automatisch zu erstellen:
<?php
$lines = file(".env", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
print "<?php\n\n";
print "// compiled from .env with date ".date("d.m.Y H:i:s",filemtime(".env"))." and ".filesize(".env")." bytes on ".date("d.m.Y H:i:s")."\n\n";
print "return array (\n";
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) continue;
list($name, $value) = explode('=', $line, 2);
$name=trim(str_replace(array("'",'"'),'',$name));
$value=trim(str_replace(array("'",'"'),'',$value));
print " '$name'=>'$value',\n";
}
print ");\n";
?>
Das Tool einfach als z.B. createLocalEnv.php im selben Verzeichnis wir die .env Datei auf dem Server speichern und folgendermassen ausführen:
php createLocalEnv.php >.env.local.php
Das Tool ist SEHR, SEHR SIMPEL gestrickt und unter Umständen nicht für alle Configs verwendbar ( aber auch dann nimmt es einem noch 95% der Arbeit ab). Die erstellte Datei bitte in jedem Fall sorgfältig kontrollieren und mindestens mittels „php bin/console debug:dotenv“ prüfen.
Viel Spaß damit
Dirk