RSS-Feed funktioniert nicht – XML Parsing Error beheben
Ein häufiges WordPress-Problem: Der RSS-Feed wirft einen XML Parsing Error und ist für Feed-Reader und Aggregatoren unbrauchbar. Meist steckt eine unsichtbare Leerzeile am Anfang der Ausgabe dahinter – verursacht durch einen falschen Zeilenumbruch in einer Konfigurationsdatei.
Das Symptom
Beim Aufruf des RSS-Feeds im Browser erscheint eine Fehlermeldung wie:
XML-Verarbeitungsfehler: XML oder Text-Deklaration nicht am Anfang der Entität
Adresse: https://example.com/feed/
Zeile Nr. 2, Spalte 1:
Oder in englischsprachigen Browsern:
XML Parsing Error: XML or text declaration not at start of entity
Location: https://example.com/feed/
Line Number 2, Column 1:
Das Problem: XML verlangt, dass das Dokument exakt mit <?xml beginnt. Steht davor irgendein Zeichen – auch ein unsichtbarer Zeilenumbruch oder Whitespace – ist das Dokument für Parser ungültig.
Die Ursache: Leerzeile in wp-config.php
In WordPress-Multisite-Installationen enthält die wp-config.php einen besonderen Abschnitt mit Multisite-Konfiguration. Wenn nach dem schließenden ?>-PHP-Tag (oder nach dem letzten Code-Block ohne PHP-Closing-Tag) ein Zeilenumbruch oder Leerzeichen steht, wird dieser als Ausgabe an den Browser gesendet – noch bevor WordPress den RSS-Feed aufbaut.
Konkretes Beispiel: In der wp-config.php stand am Ende des Multisite-Blocks:
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
// ... weitere Multisite-Einstellungen ...
?>
← dieser Zeilenumbruch ist der Übeltäter
PHP gibt alles außerhalb von <?php ... ?>-Tags direkt aus – also auch diesen Zeilenumbruch. Der RSS-Feed beginnt dann mit einem Newline-Zeichen statt mit <?xml.
Die Lösung: Return-Zeichen entfernen
Die wp-config.php per SSH oder SFTP öffnen und den fehlerhaften Zeilenumbruch entfernen:
nano /var/www/vhosts/example.com/httpdocs/wp-config.php
Ans Ende der Datei navigieren. Falls ein schließendes ?> vorhanden ist – entfernen. PHP-Dateien brauchen kein Closing-Tag; es ist sogar Best Practice, es wegzulassen, um genau dieses Problem zu vermeiden. Sicherstellen, dass nach dem letzten Code-Zeichen kein Leerzeichen, Zeilenumbruch oder anderes Whitespace-Zeichen folgt.
Korrekte letzten Zeilen der wp-config.php:
/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';
Kein ?> danach, kein Zeilenumbruch nach der letzten Zeile.
Weitere Quellen für vorangestellte Ausgabe
Wenn das Problem nach dem Beheben der wp-config.php weiterhin besteht, gibt es weitere verdächtige Dateien:
functions.php des Themes: Gleiche Ursache – Zeilenumbruch nach ?> am Dateiende. Prüfen und ggf. das Closing-Tag entfernen.
Plugin-Dateien: Besonders ältere Plugins mit schlechter Code-Qualität. Das Deaktivieren aller Plugins und Test des Feeds hilft bei der Eingrenzung.
BOM (Byte Order Mark): Manche Editoren speichern PHP-Dateien mit einem UTF-8-BOM am Dateianfang. Dieser ist für Browser unsichtbar, bricht aber XML-Feeds. Mit file oder hexdump prüfen:
hexdump -C wp-config.php | head -2
Wenn die erste Zeile mit ef bb bf beginnt, ist ein BOM vorhanden. Entfernen mit:
sed -i '1s/^//' wp-config.php
Schnelltest: Was wird wirklich ausgegeben?
Mit curl lässt sich prüfen, womit der Feed tatsächlich beginnt:
curl -s https://example.com/feed/ | head -c 100 | xxd
Ein korrekter Feed beginnt mit 3c 3f 78 6d 6c (ASCII für <?xml). Steht davor 0a (Newline) oder 0d 0a (Windows-Zeilenumbruch), ist der Übeltäter eine Datei mit nachgestelltem Whitespace.
Fazit
XML Parsing Errors im RSS-Feed haben fast immer dieselbe Ursache: ein Zeichen vor dem <?xml-Tag. Die häufigste Quelle ist ein Zeilenumbruch nach einem PHP-Closing-Tag in wp-config.php oder einer Plugin-/Theme-Datei. Die Lösung ist einfach – das Closing-Tag entfernen und sicherstellen, dass PHP-Dateien ohne nachgestelltes Whitespace enden.


