From: James Crow on
Hello,

I am having a problem with unserializing integers with Windows XP/PHP
5.2.11. The serialization takes place on a Linux x86_64 host. The values
then gets passed to the Windows machine that is 32 bit. I think the
problem is 32/64 bit related. If I serialize a number say 2600001234 on
32 bit Windows it becomes s:10:"2600001234". If I do the same from 64
bit Linux it becomes i:2600001234.

Is there a way to force it to serialize as a string on 64 bit PHP? If
it matters this is an index of an array.

Thanks,
James

From: Pierre Joye on
hi James,

For the record: unlike the waste majority of unices, Windows x64
maximum integer in PHP (which uses the long C type ) is always 32bit,
signed (2^31 +/-).

Are you sure that you get s:10:"2600001234"? Using the latest 5.2 I
got: d:2600001234; (windows)

However, serialize is not supposed to be used to share data across
different hosts as the format can be architecture dependent. I would
suggest to use json instead, if your goal is to share data across
hosts.

Cheers,

On Mon, May 3, 2010 at 10:56 PM, James Crow <james(a)ultratans.com> wrote:
> Hello,
>
>  I am having a problem with unserializing integers with Windows XP/PHP
> 5.2.11. The serialization takes place on a Linux x86_64 host. The values
> then gets passed to the Windows machine that is 32 bit. I think the problem
> is 32/64 bit related. If I serialize a number say 2600001234 on 32 bit
> Windows it becomes s:10:"2600001234". If I do the same from 64 bit Linux it
> becomes i:2600001234.
>  Is there a way to force it to serialize as a string on 64 bit PHP? If it
> matters this is an index of an array.
>
> Thanks,
> James
>
>
> --
> PHP Windows Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>



--
Pierre

@pierrejoye | http://blog.thepimp.net | http://www.libgd.org