Wie kann ich meine Umgebungsvariablen in einer Parameterdatei in der Symfony4-Struktur abrufen?

9

Ich habe eine neue Symfony-Installation mit Symfony Flex durchgeführt und das neue Skelett gehört zur nächsten Symfony 4-Verzeichnisstruktur.

Ich füge ein erstes Drittanbieter-Bundle hinzu und konfiguriere es: HWIOAuthBundle . Dieses Bündel wird verwendet, um über Twitter mit zwei geheimen Informationen zu verbinden.

Ich deklariere mein consumer_id und mein consumer_secret in der config/packages/hwi_oauth.yaml Datei.

%Vor%

Meine Anwendung funktioniert einwandfrei. Aber ich kann meine Geheimnisse auf GitHub nicht begehen!

Ich möchte eine hwi_oauth.yaml Datei wie diese haben:

%Vor%

Ich lese die Symfony4 Best Practices über das neue DotEnv-Paket.

  

Die Verwendung von Umgebungsvariablen ist zwar nicht perfekt, hat aber viele Vorteile gegenüber dem, was wir derzeit tun. Umgebungsvariablen sind eine "Standard" -Methode zum Verwalten von Einstellungen, die von der Umgebung abhängen (es ist nicht erforderlich, beispielsweise eine parameter.yml.dist zu verwalten).

Wie in den Best Practices vorgeschlagen, füge ich diese beiden Zeilen an .env file an:

%Vor%

Aber ich habe diesen Fehler gefunden:

  

Sie haben einen nicht vorhandenen Parameter "twitter_consumer_id" angefordert.

Ich habe versucht mit %kernel.twitter_consumer_id% , %env.twitter_consumer_id% , %env(TWITTER_CONSUMER_ID)% ohne Erfolg.

Der letzte Test gibt diese Fehlermeldung zurück:

  

Beim Rendern einer Vorlage wurde eine Ausnahme ausgelöst ("Umgebungsvariable nicht gefunden:" TWITTER_CONSUMER_ID ".").

Wie kann ich meine ENV-Variablen in einer Parameterdatei wie hwi_oauth.yaml ?

abrufen     
Alexandre T 25.08.2017, 19:49
quelle

2 Antworten

7

Sie müssen die .env -Datei während des Bootstrap-Prozesses laden, damit diese Umgebungsvariablen verfügbar sind:

%Vor%

Sie sollten planen, geheime Schlüssel in Umgebungsvariablen für Entwicklung, Bereitstellung und Produktion zu legen. Wie Sie das machen, hängt jedoch davon ab. In der Entwicklung und im Staging verwenden Sie vielleicht .env files, während Sie während der Produktion Apache zum injizieren verwenden.

Persönlich verwende ich immer .env Dateien, und ich behalte ein leeres in meinem Repository. Auf diese Weise ist die Bereitstellung sehr einfach und es gibt keine speziellen Fälle.

Wenn Sie .env -Dateien nur in bestimmten Umgebungen verwenden möchten, können Sie Folgendes tun:

%Vor%     
bishop 25.08.2017, 20:25
quelle
5

Für test -Umgebungen würde ich vorschlagen, auch ein bootstrap.php -Skript zu erstellen, um die .env -Parameter zu überschreiben:

tests / bootstrap.php:

%Vor%

phpunit.xml.dist:

%Vor%     
yceruto 25.08.2017 21:01
quelle