15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
21.10.2024
1 +1

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 Datei
  • post_max_size — Obergrenze für den gesamten POST-Body, der *größer* sein muss als upload_max_filesize
  • max_execution_time — maximale Echtzeit-Sekunden, die ein PHP-Prozess laufen darf
  • memory_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

DirektiveStandard (typischer Shared-Host)Empfohlenes MinimumWas sie steuert
`upload_max_filesize`2M64M–128MMaximale Größe einer einzelnen hochgeladenen Datei
`post_max_size`8M128M (muss das Upload-Limit überschreiten)Maximale Größe des gesamten POST-Anfrage-Bodys
`max_execution_time`30300Sekunden, bevor PHP das Skript beendet
`max_input_time`60300Sekunden, die PHP mit dem Parsen von Eingabedaten verbringt
`memory_limit`128M256MRAM 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 = 256M

Starten 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 .htaccess einen 500 Internal Server Error, weil das Apache-Modul, das PHP verarbeitet, nicht mod_php ist. Wenn nach dem Speichern ein 500-Fehler auftritt, entfernen Sie diese Zeilen sofort.
  • Auf Nginx-Servern wird .htaccess vollständig ignoriert. Verwenden Sie stattdessen php.ini oder eine php.ini-Benutzer-Override-Datei.
  • Einige verwaltete Hosts deaktivieren AllowOverride fü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:

  1. Melden Sie sich bei cPanel an.
  2. Navigieren Sie zu Software und klicken Sie auf MultiPHP INI Editor.
  3. Wählen Sie das Dokumentenstammverzeichnis Ihrer WordPress-Website aus dem Dropdown-Menü aus.
  4. Suchen und aktualisieren Sie die folgenden Felder:
  • upload_max_filesize128M
  • post_max_size256M
  • max_execution_time300
  • memory_limit256M
  1. 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 = 256M

Laden 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-fpm

Sicherheitshinweis: 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.log

Suchen 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 UmgebungEmpfohlene Methode
VPS oder Dedicated Server mit root-SSHSystem-`php.ini` bearbeiten, PHP-FPM neu starten
cPanel Shared HostingMultiPHP 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 fehlHost kontaktieren oder zu VPS migrieren

Technische Checkliste, bevor Sie das Problem als gelöst betrachten

  • post_max_size ist höher eingestellt als upload_max_filesize — dies ist die häufigste Fehlkonfiguration
  • Änderungen wurden mit phpinfo() oder php -r "echo ini_get(...)" überprüft — nicht nur angenommen
  • PHP-FPM wurde neu gestartet, wenn .user.ini oder php.ini direkt bearbeitet wurde
  • Die bearbeitete .user.ini oder php.ini entspricht der PHP-Version, die tatsächlich die WordPress-Website bedient
  • memory_limit beträ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_filesize unabhä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.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen