8.6 KiB
Fehlerbehebung
Häufige Probleme
Frontend-Probleme
Seite lädt ohne CSS/JavaScript
Problem: Seite wird angezeigt, aber ohne Styling oder JavaScript-Funktionalität.
Lösung:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# Windows
netstat -ano | findstr :8080
taskkill /PID <prozess-id> /F
# Linux/Mac
lsof -i :8080
kill -9 <prozess-id>
Lösung 2 - Port ändern:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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:
# 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
# .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!
# 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:
- Logs sammeln:
docker-compose logs > debug_logs.txt
- Systeminfo sammeln:
docker version > system_info.txt
docker-compose version >> system_info.txt
php -v >> system_info.txt
- Issue erstellen mit:
- Problembeschreibung
- Fehlermeldung
- Logs (debug_logs.txt)
- Systeminfo (system_info.txt)
- Schritte zum Reproduzieren
Siehe auch:
- Docker - Container-Management
- Development - Entwickler-Workflow
- Installation - Setup-Anleitung