Skip to content


Subversion checkout URL

You can clone with
Download ZIP


JSON encoding /decoding problems on older PHP versions #2735

sgiehl opened this Issue · 8 comments

4 participants


On our meetup today a user reported problems with displaying some statistics in piwik mobile. As that were parse errors in the json string given from the server, we checked the response.

Seems to be that on his server the numberformating didn't work as expected as there were parts formated like {'key': 12,7} which is just invalid and should be {'key': 12.7}

I searched a bit, and I guess that might be a problem with older versions of PHP (<5.2.15). see

I currently don't have a server with php 5.2 running, so I can't reproduce that bug.

In order to fix that issue, maybe we should set the locale to english before using json_encode and reset that afterwards.


I think bug 53507 lists the wrong php version; I tested 5.2.6, 5.2.13 (and above) and the locale had no effect

I was able to reproduce the problem with 5.2.1. I checked the php 5 changelog, and this problem was reportedly fixed in 5.2.5.


(In [5432]) fixes #2735


Cool to get this fixed, what a complicated thing to do to be cross version compatible :) but this is good.

Can you please confirm that it does not break BC for existing JSON strings (except those with the buggy php version)?


The fallback is libs/upgradephp/upgrade.php's json_encode/json_decode, which is already used by Piwik users running PHP 5.1.x. This will now also apply to users running:

  • php 5.2.0, and
  • php 5.2.1 to 5.2.4 where the locale's decimal separator isn't '.'

[] < can you elaborate a bit on what you see here?


(In [5520]) refs #2735, refs #2812


(In [5984]) refs #2735


(In [5994]) refs #2735 I assume it cannot hurt

@sgiehl sgiehl added this to the 1.7 Piwik 1.7 milestone
@robocoder robocoder was assigned by sgiehl
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.