Bei der kommenden Version 2.5 von WordPress hat sich (wie dem ein oder anderen bekannt) einiges im Adminbereich geändert. Nicht nur die Optik hat einen neuen Anstrich bekommen, sondern auch technisch wurde einiges überarbeitet. Davon betroffen ist auch das Hochladen von Dateien. Beim Upload von Bildern werden z.B. zwei Thumbnails (klein und mittel) erstellt. Das “tolle” darin ist, dass bei einer frischen Installation von WordPress 2.5 (RC1) bei meinem Webhoster der Wahl Domainfactory, keine der drei Dateien die richtigen Rechte erhält, so dass man damit arbeiten kann, sprich, diese aufgerufen werden können. Auch bei anderen Dateien (Dokumente, Audio oder Video) werden die Dateirechte falsch gesetzt. Das Problem ist bekannt.
Ich habe versucht mein Plugin für die WordPress 2.5 anzupassen. Das Problem daran ist aber, dass das Erstellen der Thumbnails *nach* dem eigentlich Upload durchgeführt wird. Damit ist der Zugriff über ein Plugin während des Upload-Vorgangs unmöglich. Überall dort, wo nur eine Datei auf dem Webspace ankommt, als nach dem Upload nichts mehr mit der Datei gemacht wird, kann man die Dateirechte noch via Plugin ändern. Das ist aber nur ein kleiner Trost.
Auch wenn ich sehr gerne an dem Plugin rumprogrammiere, frage ich mich, wieso dieses Problem überhaupt auftritt. Ein generelles Problem mit dem Setzen der Dateirechte durch WordPress liegt m.M.n nicht vor, sonst würde das Problem überall auftreten und nicht nur bei Domainfactory. Mich würde wirkliche interessieren warum ausgerechnet diese eine Funktion in WordPress so mit dem Webspace von Domainfactory kollidiert.
So wie ich das im Moment sehe, ist eine eigene Installation von WordPress 2.5 auf Webspace von Domainfactory, nur mit manuellem eingreifen (via FTP) nach jedem Upload nutzbar.
[UPDATE]
Lese gerade bei momworx, dass das Problem wohl dann auftritt, wenn der “Apache als CGI-Modul” läuft. Ich vermute mal, dass hier wohl eher PHP als CGI-Modul gemeint ist. Dann müsste das Problem aber viel häufiger auftreten.
[2. UPDATE]
Habe gerade einmal ohne mein Plugin mit modifizierter /wp-admin/includes/file.php ein Bild hoch geladen. Gleiches Problem: die Rechte des Originalbildes werden geändert, nicht aber die der Thumbnails.
[3. UPDATE]
Nachdem ich mir die zuständigen Dateien angesehen habe, bin ich doch tatsächlich auf die richtige Funktion gestoßen. Deshalb hier mein Workaround für das Aktualisieren der Dateireche bei WordPress 2.5.
Änderungen in der Datei wp-admin/includes/file.php
Suchen nach
// Set correct file permissions $stat = stat( dirname( $new_file )); $perms = $stat['mode'] & 0000666; @ chmod( $new_file, $perms ); Und wie folgt erweitern
// Set correct file permissions $stat = stat( dirname( $new_file )); $perms = $stat['mode'] & 0000666; @ chmod( $new_file, $perms ); chmod ($new_file,0640); Damit sind dann schon einmal die Dateirechte der Originaldatei geändert.
Änderungen in der Datei wp-admin/includes/image.php
Suche nach
// fetch additional metadata from exif/iptc
$image_meta = wp_read_image_metadata( $file );
if ($image_meta)
$metadata['image_meta'] = $image_meta;
Und direkt darunter folgenden Code anfügen
$thumbs = explode (".",$file); foreach (glob($thumbs[0]."*") as $currentfile) { chmod ($currentfile,0640); } Erläuterung: da (aufgrund der im Dateiname eingefügten Dimensionen) nicht bekannt ist, welchen Dateiname die Thumbs haben, schneiden wir als erstes die Dateiendung mit explode ab. Danach suchen wir mit der PHP-Funktion glob nach allen Dateien mit dem übergeben Dateiname (ohne Endung) und ändern die Dateirechte.
Nutzung auf eigene Gefahr!
Mal sehen, ob ich das irgendwie in mein Plugin bekomme. Bei jeder neuen WordPress Version im Code rumzufummeln finde ich nämlich ziemlich albern.
[4. UPDATE]
Da ich jetzt wusste, wo ich suchen muss konnte ich das Ganze auch in mein Plugin integrieren. Das hat zwar nochmal ein bisschen Zeit gekostet, aber jetzt funktioniert das Ändern auch automatisch in WordPress 2.5. Siehe hier.