JSON data error in Joomla 3.6.3

Wenn ihr eure Joomla-Seite auf Version 3.6.3 oder höher updaten wollt, kann es passieren, dass eure Seite nicht mehr erreichbar ist und folgenden Fehler anzeigt:

0 - Error decoding JSON data: Syntax error

Falls dieser Fehler auftritt, liegt das an fehlerhaften Daten in eurer Joomla Datenbank. Genauer gesagt, an Daten die dort im JSON-Format gespeichert sind. Falls die Daten fehlerhaft sind, dann wurden die bisher immer still verworfen und die Seite hat soweit normal funktioniert. Ab der neuen Joomla Version 3.6.3 hat sich dieses Verhalten geändert, denn die Prüfung der JSON-Daten wurde verbessert. Das heißt, das einige Fehler bisher keine Auswirkungen hatten, nun aber dazu führen dass die Seite nicht mehr funktioniert und den genannten Fehler anzeigt.

Was tun?

Robert Went hat ein kleines Tool geschrieben, dass die meisten dieser fehlerhaften JSON Daten korrigiert. Das Script könnt ihr bei Github herunterladen. Anschließend müsst ihr es in das Wurzelverzeichnis euer Joomla Installation legen und ausführen. Danach sollte eure Seite im besten Fall wieder funktionieren. Das prüft ihr einfach durch einen erneuten Aufruf der fehlerhaften Seite.

Falls das keinen Erfolg gebracht hat, klickt ihr auf Check For All Invalid Values, um eventuell weitere fehlerhafte Daten zu finden. Diese müsst ihr dann manuell korrigieren, beispielsweise mit phpMyAdmin.

Proxy-Einstellungen bei Android ändern

Einen Proxy-Server bei Android einzustellen ist möglich und nicht komplizierter als auf anderen Systemen. Die einzige Schwierigkeit ist, diese Einstellungsmöglichkeit bei Android überhaupt zu finden. Das ist nämlich kein Punkt, den man beispielsweise im Bereich System findet. Stattdessen legt man Proxy-Server jeweils für ein WLAN fest und findet die Einstellungen dazu dann eben auch im Bereich WLAN.

Dazu drückt man länger auf den das gewünschte WLAN, für das man die Einstellung vornehmen möchte. Anschließend wählt man im erschienenen Menü den Eintrag Netzwerkkonfiguration ändern und setzt den Haken bei Erweiterte Optionen anzeigen. Nun kann man einen Proxy-Server konfigurieren.

Wenn man darüber nachdenkt, eine sinnvolle Entscheidung, schließlich möchte man nicht ständig den Proxy-Server ein- und ausschalten, wenn man in anderen WLANs unterwegs ist.

Keepass weckt Festplatten im Ruhemodus

Wer regelmäßig im Internet unterwegs ist, kennt das Problem: Im Laufe der Zeit sammelt man immer mehr Passwörter. Diese kann man sich nur schwer merken, sofern sie nicht zu einfach gewählt sind, und hoffentlich nicht immer die selben. Zum Verwalten und Sichern gibt es einige Programme, darunter auch das exzellente Open-Source-Programm KeePass 2. Die gespeicherten Passwörter werden natürlich ebenfalls geschützt, entweder durch ein Master-Passwort, eine Schlüsseldatei, den Windows-Account oder eine Kombination davon.

Ein für mich unschönes Verhalten war, dass beim Entsperren der Datenbank stets die Festplatten im Standby bzw. Ruhemodus wieder anliefen. KeePass scheint also auf eine Datei dort zugreifen zu wollen. Meine erste Vermutung war die Liste der zuletzt verwendeten Dateien, aber es war keine Datei darunter, die auf einer anderen Festplatte lag. Mit Hilfe des Process Monitor bin ich der Lösung schon näher gekommen.

KeePass hat auf jeder Festplatte im Wurzelverzeichnis nach Schlüsseldateien mit der Endung *.key gesucht. So natürlich auch auf der Festplatte im Ruhemodus, die daraufhin aus dem Schlaf erwacht ist.

Glücklicherweise kann man dieses Verhalten in den Optionen abschalten. Dazu  muss man unter

Extras > Optionen > Erweitert, Abschnitt Erweitert

den Haken bei „Automatisch nach Schlüsseldateien suchen“ entfernen. Danach herrscht Ruhe bei den schlafenden Festplatten.

Skype-Werbung blocken

Werbung in Desktop-Programmen nervt. Das denkt sich wohl jeder, der Skype zum chatten oder zum (video-) telefonieren nutzt. Oben macht sich Bannerwerbung breit, und unter der Kontaktleiste  werden einem die Vorteile von Skype gepredigt.

Im Netz finden sich einige Hinweise, um diese unerwünschten Hinweise abzuschalten. Ein Tipp bezieht sich auf undokumentierte Änderungen in der Konfigurationsdatei des Skype-Profils. Dazu muss man im Explorer in das Profilverzeichnis von Skype wechseln. Es liegt unter

%Appdata%\Skype\[Name des Profils]\

Dort angekommen ändert man in der Datei config.xml mit einem Editor die Werte in den Elementen <DisablePromo> und <DisableTip>  von 0 auf 1.

Die Änderungen sollten nicht durchgeführt werden, solange Skype nicht vollständig beendet ist, da die Änderungen sonst wieder überschrieben werden können. In den neuesten Skype-Versionen, die mittlerweile von Microsoft veröffentlicht werden, scheint diese Änderung leider nicht mehr zu funktionieren.

Um die immer noch vorhandene Bannerwerbung zu blockieren, müssen wir eine andere Strategie anwenden. Wenn man die Werbung schon nicht in Skype entfernen kann, lassen wir sie gar nicht bis dahin kommen. Dazu blockieren wir den Ad-Server von Microsoft in der hosts-Datei. Diese Datei befindet sich im Ordner

%SystemRoot%\system32\drivers\etc

Wir öffnen sie ebenfalls mit einem Editor und fügen am Ende folgende Zeile hinzu:

127.0.0.1        rad.msn.com

Um die Datei speichern zu können, sind möglicherweise Administrator-Rechte erforderlich. Nachdem die Datei gespeichert wurde, sollte in Skype keine Werbung mehr angezeigt werden. Der entsprechende Platz bleibt zwar weiterhin für Werbung reserviert, zeigt jedoch nur eine weiße Fläche.

Negative Suche bei Eclipse

Die Suche bei Eclipse bietet ja durchaus viele Möglichkeiten. Man kann über alle Dateien suchen, dabei RegEx einsetzen und bei Bedarf auch noch die Suchergebnisse ersetzen.

Ein Feature hat mir jedoch gestern gefehlt: Ich wollte alle Dateien finden, die einen Ausdruck nicht enthalten, also eine Art negative Suche. Dafür gibt es leider keine Checkbox, mit der man dieses Verhalten aktivieren kann.

Über Umwege geht es aber doch. Und zwar mit Hilfe RegEx — wer hätte das gedacht. Der Audruck findet alle Dateien ohne den Begriff foobar.

(?s)\A((?!foobar).)*\Z

Vergesst beim Ausprobieren nicht, den Haken bei Regular Expression zu setzen.

CyanogenMod: Synchronisation ein- und ausschalten

Auf meinem altgedienten Handy läuft seit neuestem die Android-Alternative CyanogenMod. Mit diesem schlanken ROM läuft alles wieder viel schneller, und ich habe ein aktuelles System ohne mit weniger Sicherheitslücken.

Allerdings hat es ein bisschen gedauert, bis ich herausgefunden habe, wie ich die Synchronisation der Konten einschalten kann. In den Einstellungen gibt es nämlich keine Möglichkeit dazu. Als Tipp hier die Erklärung wo man die Synchronisation doch an- und ausschalten kann. Es gibt zwei Möglichkeiten:

  1. Per Widget, beispielsweise mit der Energiesteuerung
  2. In den Schnelleinstellungen die Sync-Kachel hinzufügen

Das war schon alles. Man muss nur erst darauf kommen. 😉

Thunderbird-Addon Sieve wieder zum laufen kriegen

Auch wenn viele Leute wohl auf ewig nur eine Webmail-Oberfläche zum E-Mail versenden nutzen werden, weil sie schlicht kein Desktop Programm kennen, bin ich froh Thunderbird zu nutzen. Auch wenn es wohl nicht mehr wirklich weiterentwickelt wird, ist es eine tolle Software mit vielen Erweiterungsmöglichkeiten.

Eine davon ist das Filter-Addon Sieve. Mit Sieve kann man seine Mails bei einem IMAP-Konto schon auf dem Server in Ordner verschieben, abweisen, weiterleiten und vieles mehr. Mit dem Addon lässt sich das ganze komfortabel aus Thunderbird heraus bewerkstelligen.

Leider habe ich vor einigen Wochen festgestellt, dass das Addon die aktuelle Konfiguration nicht mehr von Webserver laden konnte. Meine erste Vermutung war, dass die Serverkonfiguration sich einfach geändert hat. Doch ich stellte fest, dass es am Addon liegen musste — denn es funktionierte bei keinem einzigen Konto mehr.

Ein Blick auf den Bugtracker des offiziellen Repositories bestätigte meine Vermutung. Die Lösung war aber nicht weit entfernt. Mit der aktuellen Entwickler-Version 0.2.3 funktioniert es wieder perfekt. Diese muss man herunterladen und im Thunderbird manuell hinzufügen. Danach sollte wieder alles wie gewohnt funktionieren.

Download: Sieve Nightly Builds

Eclipse Autocomplete funktioniert nicht mehr

Einer der Gründe, eine ausgewachsene IDE wie Eclipse zu verwenden, ist natürlich das Vorhandensein mächtiger Features wie Autocompletion. Ich nutze die Funktion gerne, und wenn sie nicht mehr funktioniert, fehlt einem etwas. Ich habe das Problem mit PHP gehabt, deswegen bezieht sich der folgende Text darauf.

Es kann einige Gründe haben, warum Autocomplete stumm bleibt. Natürlich sollte es vorher aktiviert worden sein, aber das versteht sich von selbst 😉 Nachschauen kann man das in den Einstellungen (Window > Preferences), dann weiter unter PHP > Editor > Content Assist.

Falls dort alles korrekt eingestellt ist, kann man den Index neu erstellen lassen und hoffen, dass sich das Problem damit erledigt hat. Dazu sucht man folgenden Ordner in seinem Workspace-Verzeichnis:

[workspace]\.metadata\.plugins\org.eclipse.dltk.core.index.sql.h2

Dieser muss einfach gelöscht werden. Nach einem Eclipse-Neustart sollte im Progress-Fenster die Meldung DLTK indexing in progress zu sehen sein. Das bedeutet, dass der Index neu erstellt wird. Das Autocompletion-Feature sollte danach wieder funktionieren.

Eine englische Anleitung mit Screenshots hat noch ein paar weitere Fehlermöglichkeiten aufgelistet. Die Anleitung zum Löschen des Index ist etwas versteckt als Link auf Seite 2 zu finden.

PHP als cronjob: Argumente übergeben

Heute habe ich einen cronjob eingerichtet, bei dem ein PHP-Skript ausgeführt werden sollte. Der Clou ist, dass ich Argumente an das Skript übergeben musste. Im Detail ging es um ein Update-Script für tt-rss. Doch egal, wie ich den Befehl versucht habe zu schreiben und zu verändern, der Updater lief nicht.

/usr/bin/php -f /var/www/html/tt-rss/update.php -- --feeds

Ein wenig debuggen im Updater-Skript hat dann weiter geholfen. Die Argumente kamen gar nicht an, das heißt, sie wurden nicht an das Skript übergeben. Dieses Verhalten kann nämlich in der php.ini über das Attribut register_argc_argv an- und ausgeschaltet werden.

Wenn man ein PHP-Skript per cronjob ausführt, kann man diese Einstellung ebenfalls als Argument übergeben. Die Lösung lautet somit

/usr/bin/php -d register_argc_argv=On -f /var/www/html/tt-rss/update.php -- --feeds

Joomla: Encoding-Fehler im JCE beheben

Ich hatte bei einer Joomla-Installation das Problem, dass dort bei Benutzung des deutschen Sprachpakets in den Popups, etwa beim Link-Manager, Hieroglyphen anstelle von Umlauten oder eines scharfen S angezeigt wurden. Typische Anzeichen von Encoding-Fehlern. Ein Update auf die neuesten Versionen von JCE und Sprachpaket brachte auch keine Besserung. Komisch, dachte ich, die Webseite wird doch mit UTF-8 ausgeliefert. Nach einer genaueren Untersuchung mit Firebug kam ich der Sache schon näher. Tatsächlich werden die normalen Joomla-Seiten mit UTF-8-Encoding vom Webserver geschickt. Leider wirkt sich das nicht auf JCE aus, denn der wird per iframe-Tag eingebunden. Und JCE gibt ein Encoding nicht explizit an, es hängt also von weiteren Faktoren ab, welche Kodierung letztendlich gewählt wird.

Fehler in der Zeichenkodierung des JCE Link-Managers
Fehler in der Zeichenkodierung des JCE Link-Managers

Auf dem besagten Server war es ISO-8859-1 und nicht UTF-8. Um die Frage nach dem Warum zu beantworten, muss man wissen, dass die Zeichenkodierung auf unterschiedlichen Wegen festgelegt werden kann. Das kann einerseits der Webserver sein, andererseits kann auch das PHP-Skript per header()-Anweisung die Kodierung beeinflussen. Zu guter Letzt kann im HTML-Code ebenfalls ein Hinweis per meta-Tag gegeben werden.

In meinem Fall half ein Blick auf die die Ausgaben von phpinfo. Dort war der Wert default_charset auf ISO-8859-1 gesetzt. Eine Änderung auf utf-8 hat den Fehler behoben.