3.5 KiB
SumediaStage
Shopware 6 Plugin zur Nutzung einer lizenzierten Installation unter einem URL-Unterverzeichnis (z. B. /stage/, /local/), ohne dass Plugin-Lizenzprüfungen oder die interne Shop-Identifikation fehlschlagen.
Hintergrund
Shopware speichert die APP_URL zusammen mit der Shop-ID (core.app.shopId) in der Systemkonfiguration. Bei jedem Request vergleicht ShopIdProvider die aktuelle APP_URL mit dem gespeicherten Wert. Weichen Live (https://example.com) und Stage (https://example.com/stage/) ab, wirft Shopware eine AppUrlChangeDetectedException – Plugins melden daraufhin fehlende Lizenzen.
Das Plugin registriert einen EnvironmentHelperTransformer, der bei jedem internen APP_URL-Lesezugriff den Pfad-Anteil automatisch entfernt:
https://www.example.com/stage/ → https://www.example.com
https://www.example.com/local/ → https://www.example.com
https://www.example.com → https://www.example.com (no-op)
Installation auf dem Stage-System
Voraussetzungen
- Shopware 6.6.x
- SSH-Zugang zum Stage-Server
APP_ENVmussdevoderstagingsein – nichtprodAPP_URLin.env.localist auf das Unterverzeichnis gesetzt, z. B.:APP_URL=https://www.example.com/stage/
Wichtig: Das Plugin lässt sich in
APP_ENV=prodnicht aktivieren und registriert den Transformer auch dann nicht, falls es doch installiert sein sollte. Es ist ausschliesslich fuer Staging- und lokale Umgebungen gedacht.
1. Plugin übertragen
Plugin-Verzeichnis auf den Stage-Server kopieren (z. B. per rsync oder git):
rsync -av custom/plugins/SumediaStage/ user@stage-server:/var/www/shopware/custom/plugins/SumediaStage/
Oder per git, wenn das Stage-System dasselbe Repository nutzt – dann ist das Plugin bereits vorhanden.
2. Plugin installieren und aktivieren
php bin/console plugin:refresh
php bin/console plugin:install --activate SumediaStage
php bin/console cache:clear
3. Konfiguration prüfen
Im Shopware-Admin unter Einstellungen → Erweiterungen → SumediaStage:
| Einstellung | Empfohlener Wert |
|---|---|
| Normalize APP_URL | aktiv (true) |
| Base URL override | leer lassen |
4. Verifizieren
Nach der Installation sollte der Admin-Login funktionieren und keine Plugin-Lizenzfehler mehr erscheinen. Zur Kontrolle:
php bin/console system:config:get core.app.shopId
Der gespeicherte app_url-Wert sollte nun ohne den Unterverzeichnis-Pfad gespeichert werden.
Deinstallation
php bin/console plugin:uninstall SumediaStage
php bin/console cache:clear
Konfigurationsoptionen
Admin (Einstellungen → Erweiterungen → SumediaStage):
| Schlüssel | Typ | Default | Beschreibung |
|---|---|---|---|
normalizeAppUrl |
bool | true |
Transformer aktiv/inaktiv |
baseUrl |
string | leer | Explizite Basis-URL statt Auto-Erkennung (z. B. hinter Proxy mit falschem Host-Header) |
Umgebungsvariablen (.env.local):
| Variable | Wert | Beschreibung |
|---|---|---|
SUMEDIA_STAGE_ENABLED |
0 |
Transformer deaktivieren, ohne das Plugin zu deinstallieren |
APP_ENV |
prod |
Transformer wird automatisch blockiert, Aktivierung wird verweigert |
Beispiel .env.local um das Plugin temporaer zu deaktivieren:
SUMEDIA_STAGE_ENABLED=0
Hinweis
Das Plugin muss auf allen Instanzen (live, stage, local) installiert und aktiviert sein. Auf Live-Instanzen, bei denen APP_URL keinen Pfad-Anteil enthält, ist der Transformer ein No-Op.