Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#2735 closed Bug (fixed)

JSON encoding /decoding problems on older PHP versions

Reported by: SteveG Owned by: vipsoft
Priority: normal Milestone: 1.7 Piwik 1.7
Component: Core Keywords:
Cc: Sensitive: no

Description

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 https://bugs.php.net/bug.php?id=53507

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.

Change History (11)

comment:1 Changed 2 years ago by vipsoft (robocoder)

  • Owner set to vipsoft

comment:2 Changed 2 years ago by vipsoft (robocoder)

  • Summary changed from JSON encoding problem to JSON encoding /decoding problems

comment:3 Changed 2 years ago by vipsoft (robocoder)

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.

comment:4 Changed 2 years ago by vipsoft (robocoder)

  • Resolution set to fixed
  • Status changed from new to closed

(In [5432]) fixes #2735

comment:5 Changed 2 years ago by matt (mattab)

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)?

comment:6 Changed 2 years ago by vipsoft (robocoder)

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 '.'

comment:7 Changed 2 years ago by jasher

https://bugs.php.net/bug.php?id=53507 < can you elaborate a bit on what you see here?

comment:9 Changed 2 years ago by matt (mattab)

  • Priority changed from critical to normal
  • Summary changed from JSON encoding /decoding problems to JSON encoding /decoding problems on older PHP versions

comment:11 Changed 2 years ago by matt (mattab)

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

Note: See TracTickets for help on using tickets.