potreb
27.09.2014, 11:14:00
Cześć. Mam takie zserializowane dane:
a:1:{i:1411372341502;a:3:{s:9:"firstname";s:15:"Michal Magorski";s:8:"lastname";s:18:"Fleet Card Manager";s:5:"email";s:29:"michal.magorski@se.deroil.com";}}
Odczyt na serwerze produkcyjnym działa bez problemu. Po zgraniu go na testa, zserializowane dane wyrzucaja offset error. Co może być tego powodem? Export bazy był robiony przez wtyczkę.
Crozin
27.09.2014, 11:46:43
Zapewne serwer na którym się to sypie jest 32-bitowy i liczba 1411372341502 nie mieści się w zakresie typu INT. Tak, PHP jest #@%^#$& i zakres INT jest zmienny (sic!).
potreb
27.09.2014, 12:24:04
Localhost mam postawiony na 64 bitowym, dane pochodzą z home'a. Czy można to w jakiś sposób zmienić? Preg_replacem ciąg 1411372341502 zmieniłem na s:13"1411372341502" i wtedy pomogło.
irmidjusz
27.09.2014, 12:30:12
a wyświetl dla pewności PHP_INT_SIZE
Crozin
27.09.2014, 12:32:10
A skąd się biorą takie klucze w tablicy? Może warto na etapie PHP-a wymusić tam stringa, typu:
$data[(string) $someId] = ...;
Ręczne manipulowanie zserializowanymi danymi jest raczej niebezpieczne.
potreb
27.09.2014, 13:33:22
Robie upgrate aplikacji. Zrobiłem sobie testa na serwerze, będę miał to samo środowisko. Co do twojej uwagi, to wszystkie klucze będa typu string, tak dla pewności.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.