Das WordPress Plugin Jetpack hat offenbar seit dem letzen Update einen für die Leser des Blogs recht unbequemen Bug. So werden nach der Kommentarabgabe folgende PHP Fehler erzeugt:

Die Fehlerquelle

Die Kommentarabgabe erzeugt mit aktiviertem Jetpack einige PHP Fehler
Die Kommentarabgabe erzeugt mit aktiviertem Jetpack einige PHP Fehler

Bei der Analyse des Problems wird schnell klar, dass die Fehlermeldung nur auftritt, weil das Jetpack Plugin direkt zu Beginn des Aufrufs einen Fehler erzeugt. Es versucht die Funktion ignore_user_abort() aufzurufen, die bei manchen Webhoster (wie auch bei meinem), aus Sicherheitsgründen aktiviert ist. Andernfalls wäre es beispielsweise möglich einen Server ohne einen aktiven Client zum Absturz zu bringen, indem man einen unendlichen Zähler programmiert, der den Arbeitsspeicher vollaufen lässt, ohne dass ein Client die Daten des Servers überhaupt noch abfragt. Die PHP Dokumentation definiert dies wie folgt:

Setzt den Wert dafür, ob der Abbruch einer Client-Verbindung die weitere Abarbeitung eines Skripts beenden soll.

Infolge der rot hinterlegten Fehler wurde bereits Text an den Browser übertragen, sodass direkt danach die grau hinterlegten header Fehler auftreten. Sie senden beispielsweise besondere HTTP Statuscodes oder Sessions. Dies ist jedoch nur möglich, solange noch kein Text an den Browser gesendet wurde. Anschließend funktioniert die Modifikation des Headers nicht mehr.

Die Theorie

In der Theorie sollte sich alle Fehlermeldung beseitigen lassen, indem nur die Jetpack Fehlermeldungen eliminiert werden.

Die Praxis

Nun kommen wir endlich zum spannenden Teil . . .

  1. Zunächst muss man sich per FTP die Datei /wp-content/plugins/jetpack/jetpack.php von seinem Server herunterladen. Am besten erstellt man sich noch ein Backup – schließlich kann immer etwas schieflaufen.
  2. Anschließen öffnet man die Datei in seinem Editor des Vertrauens und sucht nach ignore_user_abort
  3. Man findet (zumindest in der heute aktuellen Version) zwei Einträge, die den Fehler erzeugen. Diese befinden sich – natürlich wie der Fehlermeldung zu entnehmen – in den Zeilen 3148 und 3877. Diese kommentiert man einfach mit zwei Slashs aus, sodass in den jeweiligen Zeilen statt ignore_user_abort( true ); dann //ignore_user_abort( true ); steht.
  4. Nun lädt man die Datei wieder per FTP hoch und ersetzt damit die alte jetpack.php. Beim schreiben eines neuen Kommentars sollte der Fehler nicht mehr auftreten.

Abschließend betrachtet

Natürlich ist es nicht die feine englische Art Fehlerquellen einfach auszukommentieren. In diesem Fall ist es jedoch nicht weiter tragisch. Das ignore_user_abort() sorgt nämlich für keine wichtige Funktion, insofern der Nutzer den Ladevorgang der Seite nicht vorsätzlich abbricht oder den Browser schließt. Insofern ist die Gefahr sehr gering, dass Kommentare oder andere Eingaben nicht ordnungsgemäß gespeichert werden. Wenn man bei seinem Hoster jedoch die Möglichkeiten haben sollte die PHP.ini zu bearbeiten, so ist diese Möglichkeit auf jeden Fall vorzuziehen.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.