# 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): ```bash 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 ```bash 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: ```bash php bin/console system:config:get core.app.shopId ``` Der gespeicherte `app_url`-Wert sollte nun ohne den Unterverzeichnis-Pfad gespeichert werden. ## Deinstallation ```bash 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.