
Teilen Sie:
Diana ist Entwicklungsbeauftragte bei Vonage. Sie isst gerne frische Austern.
Wie man PHP-Umgebungsvariablen in Symfony verwendet
Lesedauer: 3 Minuten
Einführung
Umgebungsvariablen (env vars) ermöglichen es Ihnen, Ihre Symfony Anwendung in Abhängigkeit von der Ausführungsumgebung zu konfigurieren. Dieses Tutorial wird Sie durch die Verwendung von Umgebungsvariablen in einem Symfony-Projekt führen.
Verstehen von Umgebungsvariablen und Parametern
Symfony verwendet Umgebungsvariablen, um Konfigurationswerte wie Datenbankanmeldeinformationen, API-Schlüssel und andere sensible oder umgebungsspezifische Informationen zu speichern. Diese Werte können in einer .env Datei oder direkt in der Serverumgebung gesetzt werden. Während Umgebungsvariablen Werte auf der System- oder Anwendungsebene definieren, werden Parameter im Service-Container gespeichert und können auf Umgebungsvariablen verweisen.
Einrichten von Umgebungsvariablen
Die Verwendung des.env Datei
Symfony-Projekte werden mit einer .env Datei, in der Sie Umgebungsvariablen definieren können:
# .env
VONAGE_API_KEY=your_api_key
VONAGE_API_SECRET=your_api_secretSie können auch eine env.local Datei erstellen, die die Einstellungen für Ihre lokale Umgebung außer Kraft setzt.
# .env.local
VONAGE_API_KEY=your_production_api_key
VONAGE_API_SECRET=your_production_api_secret Zugriff auf Umgebungsvariablen in Symfony
In Ihrem .env oder env.local Datei gibt es eine Variable namens APP_ENV. Diese Einstellung legt fest, welche Konfigurationsdateien zur Laufzeit eingelesen werden sollen; sie kann auf prod gesetzt werden (zum Beispiel, wenn Sie eine Platform-as-a-Service wie Plattform.sh), test für eine UAT-ähnliche Umgebung, wenn Sie Werkzeuge wie PHPUnit oder PHPStan einsetzen, und schließlich dev für Ihre lokale Entwicklungsumgebung. Es gibt zwei verschiedene Methoden, mit denen Sie die geladene Konfiguration abrufen können.
In Konfigurationsdateien
Symfony erlaubt die Referenzierung von Umgebungsvariablen in Konfigurationsdateien mit der %env(VAR_NAME)% Syntax. Zum Beispiel, in config/packages/vonage.yaml:
Vonage:
api_key: '%env(VONAGE_API_KEY)%'
api_secret: '%env(VONAGE_API_SECRET)%' In Dienstleistungen
Sie können Umgebungsvariablen in Dienste einfügen, indem Sie sie in config/services.yaml:
parameters:
vonage.api_key: '%env(VONAGE_API_KEY)%'
vonage.api_secret: '%env(VONAGE_API_SECRET)%'Dann, in Ihrer service Klasse:
namespace App\Service;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
class VonageService
{
private string $apiKey;
private string $apiSecret;
public function __construct(private
ContainerBagInterface
$config)
{
$this->apiKey = $this->params->get('vonage.api_key');
$this->apiSecret = $this->params->get('vonage.api_secret');
}
}
Alternativ können Sie auch die PHP-Funktion getenv() Funktion verwenden:
$apiKey = getenv('VONAGE_API_KEY');
$apiSecret = getenv('VONAGE_API_SECRET');In der Standardbibliothek ist dies im Wesentlichen nur ein Wrapper für die $_ENV[] Superglobal; es wird jedoch empfohlen, die Konfiguration von Symfony zu verwenden, die ein vielseitigeres Set von Werkzeugen zur Handhabung von Umgebungsvariablen hat.
Validierung und Normalisierung von Umgebungsvariablen
Symfony bietet einen env() Prozessor zur Transformation und Validierung von Umgebungsvariablen:
parameters:
vonage_api_key: '%env(string:VONAGE_API_KEY)%'
vonage_api_secret: '%env(string:VONAGE_API_SECRET)%' Wann werden Umgebungsvariablen und wann Parameter verwendet?
Verwenden Sie Parameter für Werte, die in verschiedenen Umgebungen konstant bleiben.
Verwenden Sie Umgebungsvariablen für Werte, die sich je nach Umgebung ändern, wie z. B. API-Schlüssel und Geheimnisse.
Optimierung der Leistung
Um die Leistung in der Produktion zu verbessern, dumpen Sie die Umgebungsvariablen in eine kompilierte PHP-Datei:
composer dump-env prodDies erzeugt .env.local.phpund ermöglicht es Symfony, Umgebungsvariablen zu laden, ohne .env Dateien zur Laufzeit.
Debugging-Umgebungsvariablen und Parameter
Verwenden Sie die folgenden Befehle, um die aktuellen Einstellungen zu überprüfen:
bin/console debug:container --env-vars
bin/console debug:container --parameters Überlegungen zur Sicherheit
Übertragen Sie niemals sensible Daten in der
.envDatei an die Versionskontrolle.Verwenden Sie
.env.localfür lokale Überschreibungen und konfigurieren Sie Produktionsumgebungen mit aktuellen Umgebungsvariablen.Validieren Sie Umgebungsvariablen, bevor Sie sie verwenden.
Verständnis der Symfony-Umgebung im Vergleich zur Server-Umgebung
Symfony-Umgebung (
APP_ENV) definiert den Anwendungsmodus (z.B.,dev,prod,test).Server-Umgebung bezieht sich auf den physischen oder virtuellen Rechner, auf dem die Anwendung läuft.
Schlussfolgerung
Mit Umgebungsvariablen gibt Ihnen Symfony eine coole Möglichkeit, Ihre Anwendung für jede Phase - Entwicklung, Test oder Produktion - anzupassen, ohne etwas hart zu kodieren, damit sie sauber und sicher bleibt.
Haben Sie eine Frage oder möchten Sie etwas mitteilen? Beteiligen Sie sich am Gespräch auf dem Vonage Community Slackund bleiben Sie auf dem Laufenden mit dem Entwickler-Newsletter, folgen Sie uns auf X (früher Twitter), abonnieren Sie unseren YouTube-Kanal für Video-Tutorials, und folgen Sie der Vonage Entwickler-Seite auf LinkedInein Raum für Entwickler, um zu lernen und sich mit der Community zu vernetzen. Bleiben Sie in Verbindung, teilen Sie Ihre Fortschritte und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden!