So beheben Sie den Fehler „Der Link, dem Sie gefolgt sind, ist abgelaufen” in WordPress
Der Fehler "The link you followed has expired" in WordPress wird ausgelöst, wenn ein Datei-Upload oder eine Formularübermittlung eine oder mehrere PHP-Laufzeitbeschränkungen überschreitet — insbesondere upload_max_filesize, post_max_size, max_execution_time oder memory_limit. WordPress kann sich von diesen serverseitigen Ablehnungen nicht ordnungsgemäß erholen und zeigt daher diese generische Meldung anstelle eines spezifischen PHP-Fehlers an.
Die Lösung erfordert das Erhöhen dieser PHP-Direktivwerte über die Konfigurationsebene, die Ihre Hosting-Umgebung bereitstellt: php.ini, .htaccess, wp-config.php oder eine Benutzeroberfläche des Kontrollpanels. Welche Methode funktioniert, hängt vollständig von Ihrer Server-Zugriffsebene ab — root-SSH-Zugang, verwaltetes cPanel oder eine stark eingeschränkte Shared-Hosting-Umgebung erfordern jeweils einen anderen Ansatz.
Warum dieser Fehler tatsächlich auftritt
Das Verständnis der Grundursache verhindert, dass Sie die falsche Lösung anwenden. Wenn WordPress einen Upload verarbeitet, sendet der Browser eine mehrteilige POST-Anfrage an wp-admin/async-upload.php oder wp-admin/update.php. PHP wertet die Anfrage gegen vier unabhängige Limits aus, bevor WordPress auch nur eine einzige Zeile Anwendungscode ausführt:
upload_max_filesize— harte Obergrenze für jede einzelne hochgeladene Dateipost_max_size— Obergrenze für den gesamten POST-Body, der *größer* sein muss alsupload_max_filesizemax_execution_time— maximale Echtzeit-Sekunden, die ein PHP-Prozess laufen darfmemory_limit— RAM, der dem PHP-Prozess zur Verfügung steht; Bildverarbeitung und Theme-Installation sind speicherintensiv
Wenn eines dieser Limits überschritten wird, beendet PHP die Anfrage stillschweigend. WordPress erhält eine leere oder fehlerhafte Antwort und zeigt "The link you followed has expired" an. Der Fehler ist kein WordPress-Bug — es ist PHP, das die Serverrichtlinie durchsetzt.
Häufige Auslöser in der Praxis:
- Installation eines Premium-Themes (oft 5–30 MB) auf einem Shared-Host mit einem Standard-Upload-Limit von 2 MB
- Hochladen einer WooCommerce-Produkt-CSV-Importdatei
- Installation eines Plugin-Pakets, das gebündelte Assets enthält
- Wiederherstellen einer Website aus einem Backup-Archiv über das WordPress-Dashboard
- Ausführen eines lang laufenden Import-Skripts, das die Ausführungszeit-Obergrenze erreicht
PHP-Direktiven Kurzreferenztabelle
| Direktive | Standard (typischer Shared-Host) | Empfohlenes Minimum | Was sie steuert |
|---|---|---|---|
| — | — | — | — |
| `upload_max_filesize` | 2M | 64M–128M | Maximale Größe einer einzelnen hochgeladenen Datei |
| `post_max_size` | 8M | 128M (muss das Upload-Limit überschreiten) | Maximale Größe des gesamten POST-Anfrage-Bodys |
| `max_execution_time` | 30 | 300 | Sekunden, bevor PHP das Skript beendet |
| `max_input_time` | 60 | 300 | Sekunden, die PHP mit dem Parsen von Eingabedaten verbringt |
| `memory_limit` | 128M | 256M | RAM pro PHP-Prozess |
Kritische Regel: post_max_size muss immer höher eingestellt sein als upload_max_filesize. Wenn Sie upload_max_filesize = 128M setzen, aber post_max_size = 8M unverändert lassen, schlagen Uploads weiterhin fehl, weil zuerst das POST-Body-Limit erreicht wird.
Methode 1: php.ini bearbeiten (Empfohlen für VPS und Dedicated Server)
Dies ist die zuverlässigste und dauerhafteste Methode. In einer VPS-Hosting– oder Dedicated-Server-Umgebung, in der Sie root- oder sudo-Zugang haben, steuern Sie die PHP-Konfiguration direkt.
Die aktive php.ini-Datei finden:
php --ini | grep "Loaded Configuration File"Oder erstellen Sie innerhalb einer WordPress-Website eine temporäre Datei:
<?php phpinfo(); ?>Suchen Sie in der Ausgabe nach der Zeile Loaded Configuration File und löschen Sie die Datei danach sofort.
Die Direktiven bearbeiten:
upload_max_filesize = 128M
post_max_size = 256M
max_execution_time = 300
max_input_time = 300
memory_limit = 256MStarten Sie nach dem Speichern PHP-FPM oder Apache neu, um die Änderungen anzuwenden:
# For PHP-FPM (most common on modern stacks)
sudo systemctl restart php8.2-fpm
# For Apache with mod_php
sudo systemctl restart apache2
# For Nginx + PHP-FPM
sudo systemctl restart nginx php8.2-fpmÜberprüfen Sie, ob die neuen Werte wirksam wurden:
php -r "echo ini_get('upload_max_filesize');"Zu beachtender Sonderfall: Auf Servern, die mehrere PHP-Versionen ausführen (eine häufige Konfiguration auf cPanel), gibt es für jede Version eine separate php.ini. Das Bearbeiten der falschen hat keine Auswirkung. Bestätigen Sie, welche PHP-Version WordPress verwendet, bevor Sie mit der Bearbeitung beginnen.
Methode 2: .htaccess verwenden (Apache Shared Hosting)
Wenn Sie sich auf Shared Hosting ohne direkten php.ini-Zugang befinden und Ihr Server Apache mit mod_php oder suPHP ausführt, können Sie PHP-Direktiven pro Verzeichnis mit .htaccess überschreiben.
Greifen Sie über FTP, SFTP oder den Dateimanager Ihres Hostings auf Ihr WordPress-Stammverzeichnis zu. Öffnen Sie .htaccess und fügen Sie den folgenden Block an:
<IfModule mod_php.c>
php_value upload_max_filesize 128M
php_value post_max_size 256M
php_value max_execution_time 300
php_value max_input_time 300
php_value memory_limit 256M
</IfModule>Speichern und laden Sie die Datei hoch, dann testen Sie Ihren Upload.
Wichtige Einschränkungen:
- Diese Methode funktioniert nicht auf Servern, die PHP-FPM, CGI oder FastCGI ausführen. Bei diesen Stacks verursachen
php_value-Direktiven in.htaccesseinen 500 Internal Server Error, weil das Apache-Modul, das PHP verarbeitet, nichtmod_phpist. Wenn nach dem Speichern ein 500-Fehler auftritt, entfernen Sie diese Zeilen sofort. - Auf Nginx-Servern wird
.htaccessvollständig ignoriert. Verwenden Sie stattdessenphp.inioder einephp.ini-Benutzer-Override-Datei. - Einige verwaltete Hosts deaktivieren
AllowOverridefür PHP-Direktiven explizit, wodurch diese Methode selbst auf Apache unwirksam wird.
Methode 3: Direktiven zu wp-config.php hinzufügen
Diese Methode verwendet PHPs ini_set()-Funktion, um Direktiven zur Laufzeit zu überschreiben. Sie funktioniert unabhängig vom Webserver-Typ, unterliegt jedoch den open_basedir– und disable_functions-Einschränkungen des Hosts — einige Hosts blockieren ini_set() aus Sicherheitsgründen.
Öffnen Sie wp-config.php in Ihrem WordPress-Stammverzeichnis und fügen Sie die folgenden Zeilen vor dem /* That's all, stop editing! Happy publishing. */-Kommentar hinzu:
@ini_set( 'upload_max_size', '128M' );
@ini_set( 'post_max_size', '256M' );
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time', '300' );
@ini_set( 'memory_limit', '256M' );Das @ unterdrückt Fehler, wenn ini_set() deaktiviert ist, und verhindert einen weißen Bildschirm. Wenn der Host diese Werte jedoch auf Serverebene mit php_admin_value gesperrt hat, werden ini_set()-Aufrufe stillschweigend ignoriert — die Werte ändern sich nicht.
So überprüfen Sie, ob es tatsächlich funktioniert hat:
Installieren Sie das kostenlose Query Monitor-Plugin und überprüfen Sie den PHP-Umgebungs-Tab, oder fügen Sie einen temporären phpinfo()-Aufruf hinzu. Wenn die Werte weiterhin die alten Limits anzeigen, wird ini_set() auf einer höheren Ebene überschrieben und Sie müssen eine andere Methode verwenden.
Methode 4: PHP-Einstellungen in cPanel anpassen
Für Hosting-Umgebungen, die über cPanel verwaltet werden — einschließlich VPS mit cPanel — können Sie PHP-Limits über die grafische Oberfläche ändern, ohne Dateien anzufassen.
Schritte:
- Melden Sie sich bei cPanel an.
- Navigieren Sie zu Software und klicken Sie auf MultiPHP INI Editor.
- Wählen Sie das Dokumentenstammverzeichnis Ihrer WordPress-Website aus dem Dropdown-Menü aus.
- Suchen und aktualisieren Sie die folgenden Felder:
upload_max_filesize→128Mpost_max_size→256Mmax_execution_time→300memory_limit→256M
- Klicken Sie auf Anwenden.
Alternativ können Sie PHP-Version auswählen (PHP Selector) verwenden, wenn Ihr Host CloudLinux verwendet. Unter dem Tab Optionen sind dieselben Direktiven als Schieberegler oder Eingabefelder verfügbar.
Was cPanel im Hintergrund tatsächlich tut: Es schreibt eine .user.ini-Datei (für PHP-FPM) oder modifiziert .htaccess (für mod_php) in Ihrem Dokumentenstammverzeichnis. Wenn Sie diese Dateien später manuell bearbeiten, können Sie die Änderungen von cPanel überschreiben — beachten Sie diesen Konflikt.
Methode 5: Eine .user.ini-Datei erstellen oder bearbeiten (PHP-FPM-Umgebungen)
Dies ist die Methode, die die meisten Anleitungen auslassen, und dennoch ist sie der richtige Ansatz für PHP-FPM — das der Standard-PHP-Handler auf praktisch jedem modernen Hosting-Stack ist, einschließlich Nginx-basierter Umgebungen.
Erstellen Sie eine Datei namens .user.ini in Ihrem WordPress-Stammverzeichnis mit folgendem Inhalt:
upload_max_filesize = 128M
post_max_size = 256M
max_execution_time = 300
max_input_time = 300
memory_limit = 256MLaden Sie sie in dasselbe Verzeichnis wie wp-config.php hoch. PHP-FPM scannt regelmäßig nach .user.ini-Dateien — der Cache-TTL wird durch user_ini.cache_ttl gesteuert, der standardmäßig 300 Sekunden (5 Minuten) beträgt. Änderungen sind nicht sofort wirksam. Wenn Sie eine sofortige Wirkung benötigen, starten Sie PHP-FPM neu.
sudo systemctl restart php8.2-fpmSicherheitshinweis: Die .user.ini-Datei sollte nicht über das Web zugänglich sein. Fügen Sie dies zu Ihrer .htaccess hinzu, wenn Sie Apache verwenden:
<Files ".user.ini">
Require all denied
</Files>Fügen Sie auf Nginx einen Location-Block hinzu, um den Zugriff zu verweigern:
location ~ /.user.ini {
deny all;
}Methode 6: Ihren Hosting-Anbieter kontaktieren
Wenn keine der oben genannten Methoden eine Änderung der PHP-Werte bewirkt, die Sie mit phpinfo() oder Query Monitor überprüft haben, setzt der Host Limits auf PHP-FPM-Pool-Ebene oder über php_admin_value-Direktiven in der Serverkonfiguration durch — beides kann durch keine benutzerzugängliche Datei überschrieben werden.
Kontaktieren Sie in diesem Fall den Support und fordern Sie spezifische Erhöhungen an. Geben Sie die genauen Direktivnamen und Zielwerte an. Wenn der Host ablehnt oder eine harte Obergrenze setzt, die Ihren Anforderungen nicht entspricht, erwägen Sie die Migration zu einem VPS-Hosting-Plan, bei dem Sie die PHP-Konfiguration vollständig kontrollieren.
Diagnose, welches Limit den Fehler tatsächlich auslöst
Verwenden Sie diese Diagnoseschritte, anstatt zu raten, bevor Sie eine Lösung anwenden:
Aktuelle PHP-Limits von der Kommandozeile prüfen:
php -r "echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . PHP_EOL;
echo 'post_max_size: ' . ini_get('post_max_size') . PHP_EOL;
echo 'max_execution_time: ' . ini_get('max_execution_time') . PHP_EOL;
echo 'memory_limit: ' . ini_get('memory_limit') . PHP_EOL;"Das PHP-Fehlerprotokoll auf den tatsächlichen Fehler prüfen:
tail -n 50 /var/log/php/error.log
# or
tail -n 50 /var/log/apache2/error.logSuchen Sie nach Zeilen, die Allowed memory size, Maximum execution time oder POST Content-Length enthalten. Die spezifische Meldung sagt Ihnen genau, welche Direktive Sie anpassen müssen.
Überprüfen Sie die Größe der hochzuladenden Datei gegen das aktuelle upload_max_filesize. Wenn die Datei 45 MB groß ist und das Limit 64 MB beträgt, ist das Upload-Limit nicht das Problem — schauen Sie stattdessen auf post_max_size oder memory_limit.
Die richtige Methode wählen: Entscheidungsmatrix
| Ihre Umgebung | Empfohlene Methode |
|---|---|
| — | — |
| VPS oder Dedicated Server mit root-SSH | System-`php.ini` bearbeiten, PHP-FPM neu starten |
| cPanel Shared Hosting | MultiPHP INI Editor oder PHP Selector |
| Apache Shared Hosting, kein cPanel | `.htaccess` mit `php_value` (nur mod_php) |
| Nginx + PHP-FPM, kein root-Zugang | `.user.ini` im WordPress-Stammverzeichnis |
| Jede Umgebung, schneller Test | `wp-config.php` mit `ini_set()` |
| Alle Methoden schlagen fehl | Host kontaktieren oder zu VPS migrieren |
Technische Checkliste, bevor Sie das Problem als gelöst betrachten
post_max_sizeist höher eingestellt alsupload_max_filesize— dies ist die häufigste Fehlkonfiguration- Änderungen wurden mit
phpinfo()oderphp -r "echo ini_get(...)"überprüft — nicht nur angenommen - PHP-FPM wurde neu gestartet, wenn
.user.inioderphp.inidirekt bearbeitet wurde - Die bearbeitete
.user.inioderphp.inientspricht der PHP-Version, die tatsächlich die WordPress-Website bedient memory_limitbeträgt mindestens 256M, wenn Sie große Themes installieren oder bildintensive Operationen ausführen- Das Fehlerprotokoll wurde überprüft, um zu bestätigen, welches spezifische Limit die Beendigung verursacht hat
- Wenn Sie einen Shared-Web-Hosting-Plan nutzen, wurde die harte Obergrenze des Hosts bestätigt — einige Anbieter begrenzen
upload_max_filesizeunabhängig von Benutzereinstellungen auf 64M - Nach der Behebung des Upload-Fehlers überprüfen Sie, ob Ihre SSL-Zertifikate gültig sind, wenn Sie über HTTPS auf wp-admin zugreifen, da Mixed-Content- oder Zertifikatsfehler oberflächlich ähnliche Weiterleitungsfehler erzeugen können
FAQ
Warum erscheint der Fehler, obwohl ich upload_max_filesize in .htaccess erhöht habe?
Der Server führt PHP wahrscheinlich über FastCGI oder PHP-FPM statt mod_php aus. Die php_value-Direktive in .htaccess wird nur vom mod_php-Handler von Apache verarbeitet. Verwenden Sie bei PHP-FPM-Stacks stattdessen eine .user.ini-Datei im WordPress-Stammverzeichnis.
Was ist der Unterschied zwischen upload_max_filesize und post_max_size, und warum sind beide wichtig?
upload_max_filesize begrenzt die Größe jeder einzelnen Datei in einem mehrteiligen Upload. post_max_size begrenzt die Gesamtgröße des gesamten POST-Anfrage-Bodys, der die Dateidaten plus Formularfelder und Trennzeichen enthält. Wenn post_max_size kleiner ist als upload_max_filesize, wird zuerst das POST-Body-Limit erreicht und PHP verwirft die gesamte Anfrage, bevor WordPress die Dateigröße auswerten kann.
Meine ini_set()-Aufrufe in wp-config.php werden ignoriert. Warum?
Der Host verwendet php_admin_value in der PHP-FPM-Pool-Konfiguration oder im Apache-Virtual-Host-Block. php_admin_value setzt eine Direktive aus der Perspektive der Anwendung als schreibgeschützt — ini_set()-Aufrufe für diese Direktiven werden stillschweigend verworfen. Nur der Hosting-Anbieter kann auf diese Weise gesetzte Werte ändern.
Wie überprüfe ich, ob meine PHP-Konfigurationsänderungen tatsächlich wirksam wurden?
Erstellen Sie eine temporäre Datei in Ihrem WordPress-Stammverzeichnis mit <?php phpinfo(); ?>, rufen Sie sie im Browser auf und suchen Sie nach dem Direktivnamen. Die Spalte Local Value zeigt den effektiven Wert für dieses Verzeichnis. Löschen Sie die Datei sofort nach der Überprüfung — das öffentliche Zugänglichlassen der phpinfo()-Ausgabe ist ein Sicherheitsrisiko.
Kann dieser Fehler durch etwas anderes als PHP-Upload-Limits verursacht werden?
Ja. Ein abgelaufener WordPress-Nonce kann dieselbe Meldung erzeugen. WordPress-Nonces sind standardmäßig 24 Stunden gültig. Wenn ein Benutzer die Plugin-Upload-Seite öffnet, sie über 24 Stunden inaktiv lässt und dann das Formular absendet, schlägt die Nonce-Validierung fehl und WordPress zeigt "The link you followed has expired" an. In diesem Fall generiert ein einfaches Aktualisieren der Seite einen neuen Nonce und der Upload läuft normal ab — es sind keine PHP-Konfigurationsänderungen erforderlich.
