Archiv für den Monat: Juni 2009

WordPress Fehler: undefined function token_get_all() in misc.php (line 273)

Es war mal wieder an der Zeit, dass mich die EDV im Stich lässt. Aber von Anfang an:
Ich habe meine Mail Adressen und Webseiten von einem Server auf einen anderen umgezogen, da auf dem alten System gerade die Festplatten das Zeitliche segnet. Auf dem neuen System läuft eine SUSE LINUX 10.1 (X86-64) mit Plesk auf einem Virtual-Server. Der eigentliche Umzug der Mails und Seiten sowie der installierten Applikationen wie Gallery2 und WordPress verlief  problemlos.

Als ich mich gestern jedoch mal wieder im Administrationsbereich von WordPress angemeldet habe, prangte auf der Startseite die Aufforderung die neueste Version WordPress 2.8 zu installieren. Aktuell war bei mir die Version 2.7. Da ich auf dem alten Server die automatische Update Funktion nicht ausführen konnte, reizte es mich schon, dies jetzt einmal zu probieren. Gesagt, getan. Ein kleiner Klick auf Update und das System begann zu arbeiten. Nach ein paar Minuten bekam ich dann die Meldung, dass WordPress erfolgreich upgedated werden konnte. Prima!

Als nächstes machte ich mich daran, mich im Adminbereich ein wenig umzuschauen. Alles war wie bisher, bis auf den Theme Editor. Die Stylesheet-Dateien konnten wie gewohnt bearbeitet werden. Aber die Template-Dateien liessen sich nicht mehr öffnen. Ich bekam nur eine weisse Seite zu sehen. Im Error Log des Apache-Webservers war folgendes zu lesen:

PHP Fatal error: Call to undefined function token_get_all() in /srv/www/…/wordpress/wp-admin/includes/misc.php on line 273

Da ich nicht sagen kann, ob der Theme Editor auf dem alten Server ohne Probleme gearbeitet hat, kann ich auch nicht mit Bestimmtheit sagen, dass dieser Fehler auf das Update von WordPress zurück zu führen ist oder es an dem Serverumzug gelegen hat.

Fakt ist, dass laut php.net die Tokenizer-Extension ab php 4.3.0 per default aktiviert sein soll. Bei mir läuft php5 und beim kompilieren wurde nicht „–disable-tokenizer“ angegeben. Also habe ich als Nächstes die Funktion in einem Skript von der Kommandozeile aufgerufen. Auch hier bekam ich die Fehlermeldung. Ich loggte mich auf einem Debian-Test-Server ein und probierte den Funktionsaufruf im Skript erneut. Hier funktionierte Alles wie es sollte. Kein Fehler! Ich schaute mir die installierten PHP-Pakete in aptitude auf dem Test-Server an und verglich sie mit den installierten Paketen in yast. Sie waren identisch. Also schaute ich mir noch die nicht installierten PHP-Pakete in SuSE an. Hier gab es das Paket PHP-tokenizer. Vielleicht bringt die Installation ja die gewünschte Funktion.

Da ich unter SuSE auf diesem virtuellen Server von 1&1 nicht genug RAM habe, damit yast Pakete erfolgreich installiert, tat ich dies mit rug. Dafür wird zuerst der Dienst novell-zmd gestartet. Rug greift hierauf zu.

/etc/init.d/novell-zmd start

Dann kann per rug das Paket php-tokenizer installiert werden.

rug install php-tokenizer

Anschliessend muss der Webserver neu gestartet werden.

/etc/init.d/apache restart

Jetzt der Test. Im PHP-Skript kann die Funktion token_get_all() – die vorher im Fehlerlog moniert wurde – erfolgreich aufgerufen werden. Und der Theme-Editor von WordPress zeigt auch keine weisse Seite mehr sondern öffnet die gewählte Vorlage zum Bearbeiten.

Vielleicht hilft dieser Artikel ja einigen, die wie ich im Netz erfolglos nach einer Lösung für das WordPress-Update 2.7 auf 2.8 unter SuSE auf einem virtuellen Server bei 1&1 gesucht haben.

Nachtrag: Das Problem mit der Funktion kam nicht durch den Serverwechsel, sondern durch das Update der WordPress Version zu stande. Der Funktionsaufruf von token_get_all() in der Datei misc.php kam erst in WordPress Version 2.8 hinzu.