WordPress, Debian “testing” und is_file
18. Juli 2008 von
stefan.haubold
Im laufe der Woche habe ich mal wieder alle möglichen Pakete meines Debian Servers aktualisiert. Dabei wurde WordPress auf eine neue interne Debian Version geupdated. (2.5.1-? auf 2.5.1-4)
Heute stellte OrgaQueen im Berlinerfresse Blog fest, das der TinyMCE Rich-Text-Editor im Backend nicht mehr funktioniert und im Frontend ein “bearbeiten” Link fehlt. Nach knapp 2h rumgesuche bin ich dem Fehler auf die Spur gekommen.
Fazit: “Gut gemeinte Änderung, versaut andern Leuten den halben Abend”
Wie es aussieht hat sich der Maintainer des WordPress Debian Paketes dazu entschieden, die Javascript Pakete, die es auch als Debianpaket gibt, mitzubenutzen. Z.B. gibt es unter /usr/share/javascript/prototype die Prototype Bibliothek. Warum also nicht gleich diese benutzen und Dopplungen vermeiden.
Im letzten WordPress Debian Paket wurden also verschiedene Javascript Bibliotheken direkt per SymLink verknüpft, darunter wie gesagt Prototype und auch tinyMce Basisdateien. Der WordPress-tinyMCE erzeugt seine Konfiguration durch eine PHP Datei (/usr/share/wordpress/wp-includes/js/tinymce/tiny_mce_config.php) in dieser Datei werden verschiedene Javascript Dateien geladen, und zu einer einzigen großen verknüpft. Die Datei wird dann auch noch in einem JavascriptCache zwischengespeichert.
Dazu wird eine PHP Funktion benutzt die erst prüft ob die Datei existiert und dann wird der Inhalt geladen und zusammen mit dem restlichen Code ausgegeben. In dieser Funktion wird die Existenz der Dateien mit “is_file” überprüft. Tja, und is_file liefert nun leider “false” für einen SymLink. Wenn man einen SymLink testen will, kann man ja “is_link” benutzen…
Kurz und knapp, die Dateien wurden nicht eingebunden, der tinyMCE nicht geladen und nur diese Javascript Fehlermeldung erzeugt: “tinymce is not defined”. Ich habe jetzt kurzerhand alle Symlinks durch Kopien ersetzt. Mal schauen wie das im nächsten WordPress Update gehandhabt wird.
UPDATE:
Heute war mal wieder ein Debian Update dran. Symlinks wurden wieder gesetzt. Also nochmal von vorne. Damit ich beim nächsten mal nicht denken muss:
cd /usr/share/wordpress/wp-includes/js
rm prototype.js
cp ../../../javascript/prototype/prototype.js .
cd tinymce
rm tiny_mce.js
cp ../../../../tinymce/www/tiny_mce.js .
rm tiny_mce_popup.js
cp ../../../../tinymce/www/tiny_mce_popup.js .
UPDATE2:
rm /usr/share/wordpress/wp-content/uploads/js_cache/*
Abgelegt unter: Debian/Ubuntu, Wordpress |
Kommentare (0)