HTTP 5xx-Fehler bedeuten: Der Server hat ein Problem. Aber was genau? In diesem Artikel erklären wir die häufigsten Server-Fehler und ihre Lösungen.
500 Internal Server Error
Der allgemeinste Server-Fehler. Irgendetwas ist schiefgelaufen.
Häufige Ursachen
1. PHP-Fehler im Code 2. Falsche Dateiberechtigungen 3. Fehlerhafte .htaccess 4. Speicherlimit erreicht 5. Fehlende PHP-Module
Diagnose
# Apache Error-Log
tail -100 /var/log/apache2/error.log
# Nginx Error-Log
tail -100 /var/log/nginx/error.log
# PHP Error-Log
tail -100 /var/log/php8.1-fpm.logLösungen
PHP-Fehler anzeigen (temporär für Debugging):
ini_set('display_errors', 1);
error_reporting(E_ALL);Berechtigungen prüfen:
ls -la /var/www/html/
# Dateien: 644, Verzeichnisse: 755
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chown -R www-data:www-data /var/www/html/Fehlerhafte .htaccess:
# Temporär umbenennen
mv /var/www/html/.htaccess /var/www/html/.htaccess.backup
# Wenn Website funktioniert: .htaccess Zeile für Zeile prüfenSpeicherlimit erhöhen:
; /etc/php/8.1/fpm/php.ini
memory_limit = 256M502 Bad Gateway
Der Webserver konnte den Backend-Server nicht erreichen.
Häufige Ursachen
1. PHP-FPM läuft nicht 2. Falscher Socket-Pfad 3. Backend-Anwendung abgestürzt 4. Timeout beim Backend
Diagnose
# PHP-FPM Status
systemctl status php8.1-fpm
# Socket vorhanden?
ls -la /run/php/php8.1-fpm.sock
# Prozesse laufen?
ps aux | grep php-fpmLösungen
PHP-FPM neu starten:
systemctl restart php8.1-fpmSocket-Pfad in Nginx prüfen:
# Muss übereinstimmen mit PHP-FPM-Konfiguration
fastcgi_pass unix:/run/php/php8.1-fpm.sock;PHP-FPM Pool-Konfiguration:
; /etc/php/8.1/fpm/pool.d/www.conf
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-dataBei Node.js/Python Backend:
# Läuft die Anwendung?
systemctl status myapp
# Richtige Port-Nummer in Nginx?
proxy_pass http://127.0.0.1:3000;503 Service Unavailable
Der Server ist überlastet oder in Wartung.
Häufige Ursachen
1. Server überlastet (CPU/RAM) 2. Zu viele Verbindungen 3. PHP-FPM Worker erschöpft 4. Wartungsmodus aktiv 5. Rate Limiting
Diagnose
# System-Auslastung
htop
free -h
df -h
# PHP-FPM Status
curl http://localhost/fpm-status # Falls aktiviert
# Verbindungen
ss -s
netstat -an | grep :80 | wc -lLösungen
PHP-FPM Worker erhöhen:
; /etc/php/8.1/fpm/pool.d/www.conf
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20Nginx Worker erhöhen:
worker_processes auto;
worker_connections 1024;Überlastete Prozesse finden:
# Top CPU-Verbraucher
ps aux --sort=-%cpu | head -20
# Top RAM-Verbraucher
ps aux --sort=-%mem | head -20Wartungsmodus (WordPress):
# Löschen wenn versehentlich aktiv
rm /var/www/html/.maintenance504 Gateway Timeout
Das Backend antwortet nicht rechtzeitig.
Häufige Ursachen
1. Langsame PHP-Skripte 2. Langsame Datenbankabfragen 3. Externe API antwortet nicht 4. Zu niedriges Timeout
Diagnose
# PHP Slow-Log (falls aktiviert)
tail -100 /var/log/php8.1-fpm-slow.log
# MySQL Slow-Log
tail -100 /var/log/mysql/mysql-slow.log
# Wie lange dauert die Anfrage?
time curl -o /dev/null -s -w "%{time_total}\n" https://example.com/slow-pageLösungen
Nginx Timeout erhöhen:
# In server oder location Block
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;PHP max_execution_time erhöhen:
; /etc/php/8.1/fpm/php.ini
max_execution_time = 300Langsame Queries finden (MySQL):
; /etc/mysql/my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2Schnelle Checkliste
| Fehler | Erste Aktion | |--------|--------------| | 500 | Error-Logs prüfen | | 502 | systemctl status php8.1-fpm | | 503 | htop (Auslastung prüfen) | | 504 | Timeouts erhöhen, Slow-Logs prüfen |
Generelle Tipps
1. Immer Logs prüfen
tail -f /var/log/nginx/error.log
tail -f /var/log/php8.1-fpm.log
journalctl -f2. Dienste neustarten
systemctl restart nginx
systemctl restart php8.1-fpm
systemctl restart mysql3. Konfiguration testen
nginx -t
php-fpm8.1 -t4. Ressourcen überwachen
htop
iostat -x 1Fazit
5xx-Fehler kommen von Server-Problemen. 500 = Code-Fehler prüfen, 502 = Backend läuft nicht, 503 = Überlastung, 504 = Timeouts. Die Logs sind Ihr bester Freund beim Debugging. Aktivieren Sie PHP Slow-Logs und MySQL Slow-Query-Logs, um chronische Probleme zu finden.