shopware-stage/README.md
2026-03-16 18:06:14 +01:00

3.5 KiB
Raw Blame History

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_ENV muss dev oder staging sein nicht prod
  • APP_URL in .env.local ist auf das Unterverzeichnis gesetzt, z. B.:
    APP_URL=https://www.example.com/stage/
    

Wichtig: Das Plugin lässt sich in APP_ENV=prod nicht 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.