shopware-stage/README.md

99 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

2026-03-16 18:06:14 +01:00
# 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.