Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Błąd serializacji, Dwa serwery - różne działanie serializacji...
Walian
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


Witam.
Zauważyłem coś bardzo dziwnego, na serwerze znajomego (jeden z tych na linuxpl.com) nie działa serializacja...

Plik na którym sprawdzam działanie serializacji:
  1. $form_data['cos'] = 'costam1';
  2. $form_data['cos2'] = 'costam2';
  3. $form_data['cos3'] = 'costam3';
  4. $form_data['cos4'] = 'costam4';
  5. $form_data['cos5'] = 'costam5';
  6. $form_data['cos6'] = 'costam6';
  7. $form_data['cos7'] = 'costam7';
  8. $form_data['cos8'] = 'costam8';
  9.  
  10. $sr = serialize($form_data);
  11. echo 'serialized: "'.$sr.'"'."<br>\n";
  12. $usr = unserialize($sr);
  13.  
  14. print_r($usr);

Bez znaczenia, czy zapiszę go w ANSI czy w UTF-8.

Wersja PHP na serwerze znajomego: 5.2.9.
Wersja PHP u mnie na localhost: 5.3.0.

Wynik uruchomienia pliku na serwerze znajomego:
Kod
serialized: "s:32:"c9dufa4urcvha1d4i845redp94kqrf7p";"
c9dufa4urcvha1d4i845redp94kqrf7p


Wynik uruchomienia pliku u mnie na localhost:
Kod
serialized: "a:8:{s:3:"cos";s:7:"costam1";s:4:"cos2";s:7:"costam2";s:4:"cos3";s:7:"costam3";s:4:"cos4";s:7:"costam4";s:4:"cos5";s:7:"costam5";s:4:"cos6";s:7:"costam6";s:4:"cos7";s:7:"costam7";s:4:"cos8";s:7:"costam8";}"
Array ( [cos] => costam1 [cos2] => costam2 [cos3] => costam3 [cos4] => costam4 [cos5] => costam5 [cos6] => costam6 [cos7] => costam7 [cos8] => costam8 )


Dziwne prawda? Wie ktoś czemu tak się dzieje?
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zainicjuj tablicę przed serializacją i sprawdź, czy dzieje się to samo.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Walian
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


No teraz działa. Tylko dlaczego bez inicjalizacji na jednym serwerze działa a na drugim już nie?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Może na tym serwerze, na którym nie działa jest coś ustawione w konfiguracji php.ini dla unserialize_callback_func ?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Walian
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


Sprawdziłem wcześniej wszystkie ustawienia z "serializ" w nazwie - wartości są takie same jak u mnie na localhost, czyli domyślne.
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




O ile pamiętam, to w PHP 5.3 odwołania do znaków stringów przez klamry są oznaczone jako zaniechane i należy stosować nawiasy kwadratowe. W 5.3 dochodzi pewnie do niejawnego rzutowania nieistniejącej zmiennej na string (w przypadku odwoływania przez nawiasy), co powoduje sytuację przez Ciebie opisaną. Jeśli zainicjujesz zmienną jako tablicę, nie dojdzie do rzutowania i zserializowanie nastąpi prawidłowo.

Podejrzewam, że potwierdzeniem mojej tezy będzie wywołanie var_dump na tej zmiennej.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Walian
post
Post #7





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


var_dump zwracało coś w stylu "string(32):" (nie chce mi się teraz sprawdzać) więc trafiłeś ze swoją teorią, tyle, że opisujesz przypadek wystąpienia tego na PHP 5.3, natomiast ja miałem problem na PHP 5.2.9 smile.gif
Chyba, że to ja Cie źle zrozumiałem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 05:01