php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #67469 json_encode changed behaviour in 5.5
Submitted: 2014-06-18 20:06 UTC Modified: 2017-04-28 19:33 UTC
Votes:4
Avg. Score:4.5 ± 0.9
Reproduced:2 of 2 (100.0%)
Same Version:2 (100.0%)
Same OS:0 (0.0%)
From: martin at ringehahn dot de Assigned: bukka (profile)
Status: Closed Package: JSON related
PHP Version: 5.5.13 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: martin at ringehahn dot de
New email:
PHP Version: OS:

 

 [2014-06-18 20:06 UTC] martin at ringehahn dot de
Description:
------------
It appears that in 5.5, "#61537 json_encode() incorrectly truncates/discards information" has been addressed. php 5.4 and 5.3 also had this patch at some point but it was reverted later. I assume this was done for not breaking backcompat in point releases.

However, the php 5.5 Changelog fails to mentioned that json_encode changed behaviour and now behaves as documented. specifically: "Returns a JSON encoded string on success or FALSE on failure."

the documentation also fails to mention the new constant `JSON_PARTIAL_OUTPUT_ON_ERROR`. well, it actually mentions it by referencing to it but it is not listed as a proper item.

Test script:
---------------
echo json_encode(["foo" => chr(132), "bar" => "bar"]);
// nothing, false
// this used to return "Expected result"

Expected result:
----------------
since the Changelog does not mention anything json-related, I'd expect the same behaviour as in previous versions:

echo json_encode(["foo" => chr(132), "bar" => "bar"]);
PHP Warning:  json_encode(): Invalid UTF-8 sequence in argument in php shell code on line 1
{"foo":null,"bar":"bar"}

Actual result:
--------------
false

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2014-06-20 08:13 UTC] arjen at react dot com
Your expected result was only the case for PHP 5.3.14, which was the result of not reverting a fix on time (see https://bugs.php.net/bug.php?id=61537)

http://3v4l.org/SIlJo#v5314

Documentation could be updated, but the current behaviour seems fine to me.
 [2014-06-20 12:55 UTC] martin at ringehahn dot de
@arjen

This is filed as a "Doc Bug" for a reason. Your link shows that between 5.4.29 http://3v4l.org/SIlJo#v536 (most recent 5.4) and 5.5.0 http://3v4l.org/SIlJo#v550this function has changed its behaviour. This has not been documented anywhere. Specifically: http://ca3.php.net/manual/en/migration55.changed-functions.php or http://ca3.php.net/manual/en/migration55.incompatible.php do not mention this change of behaviour.
 [2017-03-31 17:35 UTC] bukka@php.net
-Status: Open +Status: Assigned -Assigned To: +Assigned To: bukka
 [2017-03-31 17:45 UTC] bukka@php.net
Fix committed to docs:

Revision: http://svn.php.net/viewvc/?view=revision&revision=342210
Log: Fix doc bug #67496 (json_encode changed behaviour in 5.5)

P.S. Sorry for the wrong bug number in comment above (not 67496 but 67469...)
 [2017-04-28 19:33 UTC] bukka@php.net
-Status: Assigned +Status: Closed
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 13:01:31 2024 UTC