API updadte
This commit is contained in:
432
docs/troubleshooting.md
Normal file
432
docs/troubleshooting.md
Normal file
@@ -0,0 +1,432 @@
|
||||
# Fehlerbehebung
|
||||
|
||||
[← Zurück zur Hauptseite](../README.md)
|
||||
|
||||
## Häufige Probleme
|
||||
|
||||
### Frontend-Probleme
|
||||
|
||||
#### Seite lädt ohne CSS/JavaScript
|
||||
|
||||
**Problem:** Seite wird angezeigt, aber ohne Styling oder JavaScript-Funktionalität.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Assets installieren
|
||||
docker-compose exec web php bin/console assets:install public --symlink --relative
|
||||
|
||||
# Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
|
||||
# Browser-Cache leeren (Strg+F5)
|
||||
```
|
||||
|
||||
#### Live-Berechnungen funktionieren nicht
|
||||
|
||||
**Problem:** Formular-Eingaben triggern keine Berechnungen.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Browser-Konsole öffnen (F12)
|
||||
# Nach JavaScript-Fehlern suchen
|
||||
|
||||
# Prüfen ob jQuery geladen wurde
|
||||
# Sollte in Netzwerk-Tab sichtbar sein: jquery-3.7.1.min.js
|
||||
|
||||
# calculator.js prüfen
|
||||
curl http://localhost:8080/js/calculator.js
|
||||
```
|
||||
|
||||
#### Login funktioniert nicht
|
||||
|
||||
**Problem:** Login-Formular gibt Fehler oder leitet nicht weiter.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
|
||||
# Prüfen ob User existiert
|
||||
docker-compose exec db mariadb -u root -proot -e "SELECT email FROM users" immorechner
|
||||
|
||||
# Session-Verzeichnis prüfen
|
||||
docker-compose exec web ls -la /var/www/html/var/cache/dev/sessions
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### API-Probleme
|
||||
|
||||
#### Swagger UI lädt ohne CSS
|
||||
|
||||
**Problem:** http://localhost:8080/api/docs.html lädt, aber ohne Formatierung.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Bundle-Assets installieren
|
||||
docker-compose exec web php bin/console assets:install public --symlink --relative
|
||||
|
||||
# Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
|
||||
# Prüfen ob Assets existieren
|
||||
docker-compose exec web ls -la /var/www/html/public/bundles/apiplatform
|
||||
```
|
||||
|
||||
#### API gibt 401 Unauthorized
|
||||
|
||||
**Problem:** API-Anfrage mit API-Key schlägt fehl.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# API-Key prüfen
|
||||
docker-compose exec db mariadb -u root -proot -e "SELECT id, email, api_key FROM users" immorechner
|
||||
|
||||
# Korrekten Header verwenden
|
||||
curl -H "X-API-KEY: ihr-api-key" http://localhost:8080/api/immobilies
|
||||
|
||||
# Nicht "Authorization" Header!
|
||||
```
|
||||
|
||||
#### API gibt 500 Internal Server Error
|
||||
|
||||
**Problem:** API-Anfrage schlägt mit Server-Fehler fehl.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Logs prüfen
|
||||
docker-compose logs web
|
||||
|
||||
# Symfony Logs prüfen
|
||||
docker-compose exec web tail -f /var/www/html/var/log/dev.log
|
||||
|
||||
# Datenbank-Verbindung testen
|
||||
docker-compose exec web php bin/console doctrine:query:sql "SELECT 1"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Datenbank-Probleme
|
||||
|
||||
#### Connection refused
|
||||
|
||||
**Problem:** Kann nicht zur Datenbank verbinden.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# DB-Container läuft?
|
||||
docker ps | grep db
|
||||
|
||||
# DB-Container-Logs
|
||||
docker-compose logs db
|
||||
|
||||
# Warten (DB braucht ~30-60 Sekunden)
|
||||
sleep 60
|
||||
|
||||
# DB-Verbindung testen
|
||||
docker-compose exec db mariadb -u root -proot -e "SELECT 1"
|
||||
|
||||
# Neustart
|
||||
docker-compose restart db
|
||||
```
|
||||
|
||||
#### Migrations schlagen fehl
|
||||
|
||||
**Problem:** `doctrine:migrations:migrate` gibt Fehler.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Migration-Status prüfen
|
||||
docker-compose exec web php bin/console doctrine:migrations:status
|
||||
|
||||
# Datenbank droppen und neu erstellen
|
||||
docker-compose exec web php bin/console doctrine:database:drop --force
|
||||
docker-compose exec web php bin/console doctrine:database:create
|
||||
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
|
||||
|
||||
# Oder: Container komplett neu aufsetzen
|
||||
docker-compose down -v
|
||||
docker-compose up -d --build
|
||||
docker-compose exec web composer install
|
||||
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
|
||||
```
|
||||
|
||||
#### Tabellen fehlen
|
||||
|
||||
**Problem:** "Table 'immorechner.users' doesn't exist"
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Migrations ausführen
|
||||
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
|
||||
|
||||
# Tabellen prüfen
|
||||
docker-compose exec db mariadb -u root -proot -e "SHOW TABLES" immorechner
|
||||
|
||||
# Falls leer: Migration erneut ausführen
|
||||
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Docker-Probleme
|
||||
|
||||
#### Container starten nicht
|
||||
|
||||
**Problem:** `docker-compose up` schlägt fehl.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Logs prüfen
|
||||
docker-compose logs
|
||||
|
||||
# Alte Container stoppen
|
||||
docker-compose down
|
||||
|
||||
# Neu starten mit Build
|
||||
docker-compose up -d --build
|
||||
|
||||
# Docker neu starten
|
||||
# Windows: Docker Desktop neu starten
|
||||
# Linux: sudo systemctl restart docker
|
||||
```
|
||||
|
||||
#### Port bereits belegt
|
||||
|
||||
**Problem:** "Port 8080 is already allocated"
|
||||
|
||||
**Lösung 1 - Port freigeben:**
|
||||
```bash
|
||||
# Windows
|
||||
netstat -ano | findstr :8080
|
||||
taskkill /PID <prozess-id> /F
|
||||
|
||||
# Linux/Mac
|
||||
lsof -i :8080
|
||||
kill -9 <prozess-id>
|
||||
```
|
||||
|
||||
**Lösung 2 - Port ändern:**
|
||||
```yaml
|
||||
# In docker-compose.yml
|
||||
services:
|
||||
web:
|
||||
ports:
|
||||
- "8090:80" # Statt 8080:80
|
||||
```
|
||||
|
||||
#### Volumes löschen nicht möglich
|
||||
|
||||
**Problem:** "Volume is in use"
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Alle Container stoppen
|
||||
docker-compose down
|
||||
|
||||
# Volume prüfen
|
||||
docker volume ls
|
||||
|
||||
# Container mit Volume finden
|
||||
docker ps -a --filter volume=immorechner_db_data
|
||||
|
||||
# Container löschen
|
||||
docker rm <container-id>
|
||||
|
||||
# Volume löschen
|
||||
docker volume rm immorechner_db_data
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Composer-Probleme
|
||||
|
||||
#### "Class not found" Fehler
|
||||
|
||||
**Problem:** PHP kann Klasse nicht finden.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Autoloader neu generieren
|
||||
docker-compose exec web composer dump-autoload
|
||||
|
||||
# Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
|
||||
# Dependencies neu installieren
|
||||
docker-compose exec web rm -rf vendor
|
||||
docker-compose exec web composer install
|
||||
```
|
||||
|
||||
#### Composer sehr langsam
|
||||
|
||||
**Problem:** `composer install` braucht ewig.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Im Container ausführen (schneller als via Volume)
|
||||
docker-compose exec web composer install
|
||||
|
||||
# Cache leeren
|
||||
docker-compose exec web composer clear-cache
|
||||
|
||||
# Parallel Downloads aktivieren
|
||||
docker-compose exec web composer config --global process-timeout 2000
|
||||
docker-compose exec web composer config --global repos.packagist composer https://packagist.org
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Berechtigungs-Probleme
|
||||
|
||||
#### "Permission denied" in var/
|
||||
|
||||
**Problem:** Kann nicht in `var/cache` oder `var/log` schreiben.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Berechtigungen setzen
|
||||
docker-compose exec -u root web chown -R www-data:www-data /var/www/html/var
|
||||
|
||||
# Oder: 777 Rechte (nur Development!)
|
||||
docker-compose exec -u root web chmod -R 777 /var/www/html/var
|
||||
|
||||
# Cache neu erstellen
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Performance-Probleme
|
||||
|
||||
#### Seite lädt sehr langsam
|
||||
|
||||
**Problem:** Frontend/API antwortet langsam.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Opcache Status prüfen
|
||||
docker-compose exec web php -i | grep opcache
|
||||
|
||||
# Cache warmup
|
||||
docker-compose exec web php bin/console cache:warmup
|
||||
|
||||
# Für Produktion: APP_ENV=prod setzen in .env
|
||||
# Opcache aktiviert sich automatisch
|
||||
|
||||
# Docker-Resources erhöhen
|
||||
# Docker Desktop -> Settings -> Resources -> Memory: 4GB+
|
||||
```
|
||||
|
||||
#### Datenbank-Queries langsam
|
||||
|
||||
**Problem:** API-Anfragen langsam bei vielen Datensätzen.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Indizes prüfen
|
||||
docker-compose exec web php bin/console doctrine:schema:validate
|
||||
|
||||
# Query-Log aktivieren (temporär)
|
||||
# In config/packages/doctrine.yaml:
|
||||
logging: true
|
||||
profiling: true
|
||||
|
||||
# Slow Query Log in MariaDB aktivieren
|
||||
docker-compose exec db mariadb -u root -proot -e "SET GLOBAL slow_query_log = 'ON'"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Browser-Probleme
|
||||
|
||||
#### Alte Daten werden angezeigt
|
||||
|
||||
**Problem:** Änderungen werden nicht sichtbar.
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Browser-Cache leeren
|
||||
# Chrome/Firefox: Strg+Shift+Delete
|
||||
|
||||
# Hard Reload
|
||||
# Chrome/Firefox: Strg+F5
|
||||
# Mac: Cmd+Shift+R
|
||||
|
||||
# Server-Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Debug-Modus aktivieren
|
||||
|
||||
```bash
|
||||
# .env
|
||||
APP_ENV=dev
|
||||
APP_DEBUG=true
|
||||
|
||||
# Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
|
||||
# Symfony Profiler in Browser verwenden
|
||||
# Unten auf der Seite erscheint Toolbar
|
||||
```
|
||||
|
||||
## Komplett-Reset (Letzter Ausweg)
|
||||
|
||||
**WARNUNG:** Löscht alle Daten!
|
||||
|
||||
```bash
|
||||
# Alles stoppen und löschen
|
||||
docker-compose down -v
|
||||
|
||||
# Docker-Images löschen
|
||||
docker rmi immorechner-web
|
||||
|
||||
# Neu aufbauen
|
||||
docker-compose up -d --build
|
||||
|
||||
# Dependencies installieren
|
||||
docker-compose exec web composer install
|
||||
|
||||
# Datenbank initialisieren
|
||||
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
|
||||
|
||||
# Cache leeren
|
||||
docker-compose exec web php bin/console cache:clear
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
Wenn das Problem weiterhin besteht:
|
||||
|
||||
1. **Logs sammeln:**
|
||||
```bash
|
||||
docker-compose logs > debug_logs.txt
|
||||
```
|
||||
|
||||
2. **Systeminfo sammeln:**
|
||||
```bash
|
||||
docker version > system_info.txt
|
||||
docker-compose version >> system_info.txt
|
||||
php -v >> system_info.txt
|
||||
```
|
||||
|
||||
3. **Issue erstellen** mit:
|
||||
- Problembeschreibung
|
||||
- Fehlermeldung
|
||||
- Logs (debug_logs.txt)
|
||||
- Systeminfo (system_info.txt)
|
||||
- Schritte zum Reproduzieren
|
||||
|
||||
---
|
||||
|
||||
**Siehe auch:**
|
||||
- [Docker](docker.md) - Container-Management
|
||||
- [Development](development.md) - Entwickler-Workflow
|
||||
- [Installation](installation.md) - Setup-Anleitung
|
||||
|
||||
[← Zurück zur Hauptseite](../README.md)
|
||||
Reference in New Issue
Block a user