Bug #17948 Updated: serialize() and setlocale() problem (was: unserialize() failure)

From: Date: Tue, 25 Jun 2002 11:01:29 +0000
Subject: Bug #17948 Updated: serialize() and setlocale() problem (was: unserialize() failure)
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-12029@lists.php.net to get a copy of this message
ID: 17948 Updated by: sander@php.net Reported By: cox@idecnet.com -Status: Open +Status: Assigned Bug Type: Strings related Operating System: RH PHP Version: 4.2.1 -Assigned To: +Assigned To: hholzgra New Comment: Let's assign this to Hartmut, he's busy with all those locale problems. Previous Comments: ------------------------------------------------------------------------ [2002-06-24 13:16:48] cox@idecnet.com Ok, I found the problem. See that script: <?php error_reporting(E_ALL); //setlocale(LC_ALL, "es_ES"); $a = 2.3; $b = serialize($a); var_dump(serialize($b)); var_dump(unserialize($b)); ?> The output is: string(13) "s:6:"d:2.3;";" float(2.3) No problem. Now uncomment line 2. You'll get: string(13) "s:6:"d:2,3;";" Notice: unserialize() failed at offset 0 of 6 bytes in borrar.php on line 9 bool(false) Tomas V.V.Cox ------------------------------------------------------------------------ [2002-06-24 12:12:40] cox@idecnet.com I guess that there is some problem with perhaps the locale, storing "99,33" (spanish decimal) as a float, the same with "56,34", so the problem is perhaps serialize instead. I'll try to give more info. ------------------------------------------------------------------------ [2002-06-24 11:57:26] cox@idecnet.com file: bug_serialize <?php error_reporting(E_ALL); $ser = 'a:5:{s:6:"lineas";a:1:{i:0;a:7:{s:7:"ldivisa";s:3:"eur";s:9:"letcambio";s:1:"1";s:9:"leimporte";s:3:"200";s:7:"letotal";s:3:"200";s:9:"ldtcambio";s:1:"1";s:9:"ldimporte";s:2:"50";s:7:"ldtotal";s:2:"50";}}s:3:"lte";i:200;s:3:"ltd";i:50;s:10:"ltgtosefec";d:93,66;s:3:"lrl";d:56,34;}'; var_dump(unserialize($ser)); ?> With PHP 4.1.1 array(5) { ["lineas"]=> array(1) { [0]=> array(7) { ["ldivisa"]=> string(3) "eur" ["letcambio"]=> string(1) "1" ["leimporte"]=> string(3) "200" ["letotal"]=> string(3) "200" ["ldtcambio"]=> string(1) "1" ["ldimporte"]=> string(2) "50" ["ldtotal"]=> string(2) "50" } } ["lte"]=> int(200) ["ltd"]=> int(50) ["ltgtosefec"]=> float(93) ["lrl"]=> float(56) } With PHP 4.2.1 Notice: unserialize() failed at offset 253 of 280 bytes in bug_serialize on line 4 bool(false) Tomas V.V.Cox ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=17948&edit=1

« previous php.bugs (#12029) next »