Files
breadcrumb-the-shire/docs/fehlerbehebung.md
2026-03-04 15:56:58 +01:00

99 lines
2.0 KiB
Markdown

# Fehlerbehebung
Letzte Aktualisierung: 2026-02-23
## App reagiert nicht wie erwartet
### Symptom
UI zeigt alte Daten/Assets oder Verhalten wirkt stale.
### Lösung
```bash
docker compose restart php nginx
```
## Erstdiagnose mit Doctor
### Symptom
Unklar, ob das Problem aus ENV, DB, Storage, RBAC oder Scheduler kommt.
### Lösung
```bash
docker compose exec php sh -lc "php bin/doctor.php"
```
Bei `FAIL` zuerst diese Punkte beheben, danach erneut ausführen.
## Login/API verhalten sich unerwartet
### Symptom
401/403 bei API trotz gültigem Token.
### Checks
1. Für geschützte Endpunkte Authorization Header korrekt gesetzt (`Bearer <selector:secret>`)
2. Ausnahme: `/api/v1/auth/login` ist public und benötigt keinen Bearer-Header
3. Token nicht revoked/abgelaufen
4. Token hat erforderliche Permission
5. Bei tenant-scoped Token: Zugriff nur auf passende Tenant-Ressourcen
## Migration oder Schema-Probleme
### Symptom
Neue Felder/Features fehlen lokal.
### Lösung
1. Aktuelles Schema in `db/init/init.sql` prüfen
2. Für Bestandsumgebung idempotentes SQL-Update ausführen
3. Danach Container neu starten:
```bash
docker compose restart php
```
## i18n Fehler
### Symptom
Fehlende Translation-Keys oder Mixed-Language UI.
### Lösung
```bash
docker compose exec php vendor/bin/phpunit --bootstrap vendor/autoload.php tests/I18n/TranslationKeysTest.php
```
## PHPStan/Tests schlagen plötzlich fehl
### Symptom
Fehler nach Refactor, obwohl Seite lädt.
### Lösung
```bash
docker compose exec php vendor/bin/phpstan analyse -c phpstan.neon --no-progress
docker compose exec php vendor/bin/phpunit --bootstrap vendor/autoload.php
```
Dann gezielt betroffene Datei/Service prüfen.
## Swagger UI lädt ungestylt oder inkonsistent
### Symptom
API docs sehen nicht nach App-Theme aus.
### Lösung
1. Prüfen, dass `Buffer::set('style_groups', json_encode(['api-docs']))` gesetzt ist
2. Prüfen, dass `css/vendor-overrides/swagger-ui.css` über `config/assets.php` eingebunden ist
3. Hard-Reload im Browser