Piwik-Bug bei Output-Compression

Nach dem Update von Piwik (eine OpenSource Software zum Erstellen von Besucherstatistiken auf Websites) auf die aktuelle Version 1.1.1 stellte ich fest, dass das Design vollständig zerschossen war und auch die JS-Dateien nicht mehr geladen werden konnten. Genauer: es wurde noch alles geladen allerdings enthielten all diese Dateien nur noch seltsam anmutende Zeichen. Ein genauerer Blick verriet, dass es sich hier um doppelt gepackte Serverausgaben handelte.

Da mein Server von sich aus alles komprimiert (per gzip) was auszugeben ist – inkl. aller von PHP generierten Inhalte, lag es nahe zu vermuten, dass Piwik selbst ebenfalls noch einmal zur Tat schreitet. In der zentralen Klasse „Piwik“ (core/Piwik.php) Zeilen 664 und 665 findet sich der Auslöser:

$zlibOutputCompression = ini_get('zlib.output_compression');
$phpOutputCompressionEnabled = !empty($zlibOutputCompression);

Hier wird offensichtlich nur eine von mehreren Möglichkeiten der Ausgabe-Komprimierung geprüft. Ergebnis: für alle anderen möglichen Einstellungen wird die interne Kompression im nachfolgenden else-Zweig aktiv und somit doppelt komprimiert. Um das zu umgehen habe ich meine eigene config mit geprüft – heraus gekommen ist nun folgendes:

$zlibOutputCompression = ini_get('zlib.output_compression');
$outputHandler = ini_get('output_handler');
$phpOutputCompressionEnabled = (!empty($zlibOutputCompression) || $outputHandler == 'ob_gzhandler');

Mit diesem Fix läuft Piwik jetzt für mich wieder problemlos.

Kommentar verfassen