-
[Behoben] Leere Seiten mit WordPress 2.6.x
Nach dem Upgrade auf WordPress 2.6 kam es immer wieder vor das im Browser leere Seiten angezeigt wurden. Eine Seitenaktualisierung mittels STRG+F5 behob in den meisten Fällen das Problem. Heute habe ich meinen Blog auf WordPress 2.6.2 aktualisiert und danach war es nicht mehr möglich die Verwaltungsseite für Plug-ins aufzurufen. Egal was ich probierte, die Seite blieb im Browser leer.
Auf der Suche nach einer möglichen Lösung im Internet bin ich auf verschiedene Diskussionen über dieses scheinbar allgemein bekannte Phänomen gestossen. Leider half keine der skizzierten Lösungsansätze in meinem Fall.
Daher habe ich mich einmal mehr in die Untiefen des WordPress Codes gestürzt und die – für meinen Fall – entscheidenden Programmzeilen lokalisieren können. Das Problem wird durch mehrere (object) Casts in der Datei strong>wp-includes/taxonomy.php verursacht, welche Arrays in Objekte transformieren:$wp_taxonomies['category'] = (object) array('name' => 'category', 'object_type' => 'post', 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count'); $wp_taxonomies['post_tag'] = (object) array('name' => 'post_tag', 'object_type' => 'post', 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count'); $wp_taxonomies['link_category'] = (object) array('name' => 'link_category', 'object_type' => 'link', 'hierarchical' => false);Da weder Fehlermeldungen im Browser noch in den Log Dateien erscheinen habe ich leider keine Idee wieso diese Casts zum Abbruch der Skriptausführung führen. Die installierte PHP Version entspricht der aktuellen stabilen 5.x Version und sollte daher eigentlich nicht die Ursache des Problems sein.
Um das Problem zu umgehen habe ich eine Methode eingeführt die ebenfalls Arrays in Objekte transformieren kann, welche jedoch nicht auf der PHP Objekt Casting Funktion beruht.function arr2obj($arr) { foreach ($arr as $k => $v) $obj -> {$k} = $v; return $obj; } $wp_taxonomies['category'] = arr2obj(array('name' => 'category', 'object_type' => 'post', 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count')); $wp_taxonomies['post_tag'] = arr2obj(array('name' => 'post_tag', 'object_type' => 'post', 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count')); $wp_taxonomies['link_category'] = arr2obj(array('name' => 'link_category', 'object_type' => 'link', 'hierarchical' => false)); -
Sun JDK5/6 compilers broken when linking overloaded methods with variable arguments
We are currently switching the build system of OVal from custom Ant scripts to Maven 2. During that process we accidentally compiled the project using the Java compiler of the Sun JDK 5 instead of the AspectJ compiler. Surprisingly javac did not complain about the missing aspect class files. Instead it already aborted while compiling an ordinary Java class which only referenced other non-AspectJ related classes. This is the original error message:
[INFO] [compiler:compile] [INFO] Compiling 180 source files to C:\projects\oval\src\trunk\target\classes [INFO] ------------------------------------------------------------------------ [ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Compilation failure C:\projects\oval\src\trunk\src\main\java\net\sf\oval\Validator.java:[373,58] addMethodParameterChecks(java.lang.reflect.Method,int,java.lang.Object) has private access in net.sf.oval.internal.ClassChecks
There exist multiple methods named addMethodParameterChecks in the class ClassChecks with different signatures. The problem is that javac tries to link against the wrong method when compiling the class calling one of the methods.
-
[Behoben] WordPress 2.5 One-Click Plug-in Upgrades – Could not create directory
Vor einigen Tagen habe ich meine WordPress Installation auf das neue 2.5 Release aktualisiert. Aufgrund meiner Trägheit im Hinblick auf administrative Tätigkeiten wollte ich natürlich auch die neue on-click plug-in upgrade Funktion nutzen um ein paar Plug-ins zu aktualisieren. Allerdings scheiterten alle meine Versuche die Funktion zu nutzen mit der ziemlich nutzlosen Fehlermeldung “Could not create directory”. Daher begab ich mich auf die übliche Netzsuche und bin relativ schnell auf einige Beiträge gestossen, welche die Ursache in unzureichenden Berechtigungen auf bestimmte Verzeichnisse ausmachten. Das manuelle Anlegen des Verzeichnisses /wp-content/upgrade und das “chmodden” auf 777 dieses selben sowie der Plug-in Verzeichnisse würden das Problem lösen. Leider nicht bei mir. Daher blieb mir nichts weiter übrig als die Ärmel hochzukrempeln und WordPress zu debuggen…
Lange Rede, kurzer Sinn, ich bin schließlich auf den PHP Bug Report #42739 mkdir doesn’t like a trailing slash when safe_mode is enabled gestossen und es zeigte sich, daß dies genau das Problem war, welches sich mir auf meinem Hosting Account entgegenstellte. Die PHP Option safe_mode ist dort aktiviert und WordPress versucht vergeblich mit Schrägstrich endende Verzeichnissepfade anzulegen (z.B. /htdocs/wp-content/upgrade/the-plugin/).
Nachdem mir der Grund also bekannt war, konnte ich einen Workaround entwickeln und endlich den on-click plug-in updater nutzen. Für alle die das gleiche Problem haben, hier meine Lösung:
- Die Datei <wp_root>/wp_admin/includes/class-wp-filesystem-direct.php lokalisieren und in einem Editor öffnen
- Nach “function mkdir” in der Datei suchen
- Die nachfolgenden Codezeilen in die Methode einfügen.
function mkdir($path,$chmod=false,$chown=false,$chgrp=false){ if( ! $chmod) $chmod = $this->permission; // workaround for http://bugs.php.net/bug.php?id=42739 starts here if(ini_get('safe_mode') && substr($path, -1) == '/') { $path = substr($path, 0, -1); } // workaround for http://bugs.php.net/bug.php?id=42739 ends here if( !@mkdir($path,$chmod) ) return false; if( $chown ) $this->chown($path,$chown); if( $chgrp ) $this->chgrp($path,$chgrp); return true; } - Mit der Ein-Klick-Aktualisierung beginnen!
Nachtrag:
- Die Änderung funktioniert auch mit WordPress 2.5.1
- Falls diese Änderung nicht zum gewünschten Erfolg führen, kann der Fehler noch eine zweite Ursache haben. Daher sollten die Berechtigungen des Verzeichnis /wp-content/upgrade/ und dessen Unterverzeichnisse überprüft und gegebenenfalls per chmod auf 777 gesetzt werden. Falls das upgrade Verzeichnis gar nicht existieren sollte, reicht es vielleicht schon dieses einfach manuell anzulegen.
-
MyPad v1.1.6 – ein PHP Editor
MyPad ist ein kompakter PHP Editor. Ich habe diesen Editor entwickelt, weil ich keinen passenden mit einem Single Documend Interface finden konnte.
Der Editor, nach dem ich gesucht habe, sollte dem Notepad ähneln, aber auch in der Lage sein, PHP Quellcode farblich hervorzuheben.
Ein solcher Editor kann dann ideal im Zusammenhang mit einem Filemanager ähnlich dem Norton Commander verwendet werden.


Looking for a high performer for your next IT project?


English
Deutsch
Recent Comments