PHP-Timeout: Maximum execution time exceeded beheben
Ihre Website zeigt die Fehlermeldung "Maximum execution time of 30 seconds exceeded", oder Ihre Seite lädt endlos ohne Ergebnis. Das ist ein PHP-Timeout-Fehler: Ihr Skript braucht länger als die erlaubte maximale Ausführungszeit. In dieser Anleitung erklären wir, was das bedeutet und wie Sie das Problem lösen.
Was ist ein PHP-Timeout-Fehler?
PHP hat ein eingebautes Zeitlimit für die Ausführung von Skripten. Standardmäßig sind das 30 Sekunden (manchmal 60 oder 120 Sekunden, je nach Ihrer Hosting-Konfiguration). Dauert ein Skript länger, bricht PHP die Ausführung ab und zeigt folgende Fehlermeldung:
Fatal error: Maximum execution time of 30 seconds exceeded in /path/to/file.php on line 123
Dieses Zeitlimit dient als Schutz: Es verhindert, dass hängende Skripte Ihren gesamten Server überlasten. Bei legitimen Vorgängen (große Importe, Datenbankmigrationen, aufwendige Berechnungen) kann das Standardlimit jedoch zu niedrig sein.
Häufige Ursachen:
- Große Datenbankabfragen: Abfragen, die Tausende von Zeilen verarbeiten
- Datei-Uploads: große Dateien hochladen oder verarbeiten
- Plugin- oder Theme-Vorgänge: Updates, Importe oder Exporte, die lange dauern
- Externe API-Aufrufe: Verbindungen zu langsamen externen Diensten
- Endlosschleifen: Programmierfehler, durch die ein Skript hängen bleibt
- Aufwendige Bildverarbeitung: große Bilder skalieren oder konvertieren
PHP-Timeout als Website-Betreiber beheben
Folgen Sie den Schritten unten, um das PHP-Timeout zu erhöhen oder das zugrunde liegende Problem zu lösen.
1. max_execution_time über php.ini erhöhen
Der direkteste Weg, das Timeout zu erhöhen, führt über die Konfigurationsdatei php.ini:
max_execution_time = 300
Damit wird das Limit auf 300 Sekunden (5 Minuten) erhöht. Bei Shared Hosting können Sie oft eine .user.ini-Datei im Stammverzeichnis Ihrer Website mit derselben Einstellung anlegen.
2. Das Limit über wp-config.php erhöhen
Bei WordPress können Sie das Zeitlimit auch über wp-config.php festlegen:
set_time_limit(300);
Oder fügen Sie diese PHP-Einstellung hinzu:
ini_set('max_execution_time', 300);
Platzieren Sie diese Zeile in Ihrer wp-config.php oberhalb der Zeile /* That's all, stop editing!*/.
3. Über den PHP Selector in DirectAdmin erhöhen
Beim Hosting mit DirectAdmin können Sie die PHP-Einstellungen über das Control Panel anpassen:
- Melden Sie sich bei DirectAdmin an
- Gehen Sie zu Advanced Features → Select PHP Version (oder PHP Selector)
- Klicken Sie auf "Switch to PHP Options
- Suchen Sie
max_execution_timeund stellen Sie den Wert auf 300 - Klicken Sie auf "Save
4. Über .htaccess erhöhen
Auf Apache-Servern können Sie die Einstellung auch über .htaccess ändern:
php_value max_execution_time 300
Achtung: Das funktioniert nur mit mod_php, nicht mit PHP-FPM oder FastCGI. Bei PHP-FPM müssen Sie die php.ini oder die Pool-Konfiguration anpassen.
5. Das zugrunde liegende Problem optimieren
Das Erhöhen des Zeitlimits ist ein Workaround. Die eigentliche Lösung besteht oft darin, das Skript zu optimieren, das zu lange dauert:
- Datenbankabfragen optimieren: Indizes hinzufügen, die Zahl der Ergebnisse mit LIMIT begrenzen, Paginierung verwenden
- Stapelverarbeitung: große Datenmengen in kleinen Paketen statt alles auf einmal verarbeiten
- Caching aktivieren: Ergebnisse aufwendiger Berechnungen im Cache speichern (Redis, Memcached)
- Hintergrundaufgaben nutzen: aufwendige Vorgänge in eine Queue oder einen Cronjob verlagern
- Externe Aufrufe beschleunigen: Timeouts für API-Aufrufe festlegen und asynchrone Verarbeitung nutzen
6. Auf Endlosschleifen prüfen
Wenn das Timeout immer wieder auftritt, auch nach dem Erhöhen des Limits, liegt möglicherweise ein Programmierfehler vor:
- Aktivieren Sie
WP_DEBUG, um die genaue Zeile zu finden - Prüfen Sie, ob es while/for-Schleifen ohne korrekte Abbruchbedingung gibt
- Prüfen Sie rekursive Funktionsaufrufe auf einen fehlenden Basisfall
- Deaktivieren Sie kürzlich installierte Plugins, um den Verursacher zu finden
Verwandte PHP-Einstellungen
Neben max_execution_time gibt es weitere zeitbezogene PHP-Einstellungen:
| Einstellung | Standard | Funktion |
|---|---|---|
| max_execution_time | 30 | Maximale Ausführungszeit pro Skript (Sekunden) |
| max_input_time | 60 | Maximale Zeit für das Parsen von Eingaben (Sekunden) |
| memory_limit | 128M | Maximaler Speicherverbrauch pro Skript |
| upload_max_filesize | 2M | Maximale Dateigröße beim Upload |
| post_max_size | 8M | Maximale Größe von POST-Daten |
Bei einem VPS haben Sie die volle Kontrolle über all diese Einstellungen. Bei Shared Hosting sind manche Einstellungen durch Ihren Hosting-Anbieter eingeschränkt.
Häufig gestellte Fragen zu PHP-Timeout-Fehlern
Was bedeutet "Maximum execution time of 30 seconds exceeded"?
Diese Fehlermeldung bedeutet, dass ein PHP-Skript länger als 30 Sekunden gelaufen ist und vom Server abgebrochen wurde. Das Limit von 30 Sekunden ist der Standardwert der PHP-Einstellung max_execution_time. Sie können dieses Limit über php.ini, wp-config.php oder das Control Panel Ihres Hostingpakets erhöhen.
Ist es sicher, max_execution_time zu erhöhen?
Ja, eine Erhöhung auf 120-300 Sekunden ist für die meisten Websites sicher. Setzen Sie das Limit jedoch nicht auf unbegrenzt (0 = kein Limit), denn dann können hängende Skripte Ihren gesamten Server überlasten. Ein Wert von 300 Sekunden (5 Minuten) ist ein guter Kompromiss zwischen Funktionalität und Schutz.
Warum erhalte ich bei WordPress-Updates ein PHP-Timeout?
Bei Plugin- und Theme-Updates muss WordPress Dateien herunterladen, entpacken und installieren. Bei langsamen Internetverbindungen, großen Updates oder überlasteten Servern kann das länger dauern, als das Timeout erlaubt. Erhöhen Sie max_execution_time vorübergehend auf 300 Sekunden und versuchen Sie das Update erneut. Wenn das regelmäßig vorkommt, ziehen Sie auch ein Upgrade auf schnelleres Webhosting in Betracht.
Haben Sie wegen langsamen Hostings Probleme mit PHP-Timeouts? Sehen Sie sich unsere Webhosting-Pakete an, mit LiteSpeed und NVMe SSD für die schnellste PHP-Ausführung. Oder wählen Sie einen VPS mit voller Kontrolle über alle PHP-Einstellungen.
0 von 0 fanden das hilfreich