Serialize ведет себя по-разному в различных ОС

оставьте rb и после считывания проверяйте длину и crc32
Ну явно повреждение строки
 
t - специальный ключ как раз для перевода строки (выше по ветке выдержка из мана)
 
На выходе seriliaze бинарные данные, которые нужно обрабатывать как любой бинарный файл, и только так!
 
Нет никакого повреждения. При заливке обратно на локалку - все читается

-~{}~ 27.05.10 17:53:

Notice: unserialize() [function.unserialize]: Error at offset 123 of 184 bytes

Проблема В СЕРЕДИНЕ строки.

-~{}~ 27.05.10 17:55:

Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use 'b' to force binary mode, which will not translate your data. To use these flags, specify either 'b' or 't' as the last character of the mode parameter.
 
попробуйте так
PHP:
file_put_contents($name,urlencode(serialize($array));

$array=serialize(urldecode(file_get_contents($name));
 
sax player
а ты файл заливаешь на хостинг в текстовом или в бинарном режиме?
 
Автор оригинала: mity
попробуйте так
PHP:
file_put_contents($name,urlencode(serialize($array));

$array=serialize(urldecode(file_get_contents($name));
PHP:
  echo urlencode(" 
 ");
под юникс выводит %0A++, а под винду - %0D%0A++.

Так что строки получится разные

-~{}~ 27.05.10 18:14:

Автор оригинала: vovanium
sax player
а ты файл заливаешь на хостинг в текстовом или в бинарном режиме?
Что значит в текстовом? ФТП так по-моему, не умеет...
 
echo urlencode(chr(10).chr(13)." ".chr(13).chr(10)." ".chr(10)." ".chr(13));
Что выводит под windows и unix?
 
Супер!!!!!!!!!!!!!!
Просто разные текстовые редакторы у Вас вставляют разный перевод строк.

PHP:
//сохраняете на одном сервере
file_put_contents($name,urlencode(serialize($array)); 

//считываете на другом
$array=serialize(urldecode(file_get_contents($name));
 
Да нет никаких редакторов! данные из формы.
Я и говорю, что одна и та же форма на разных серверах генерит разные переводы строк.

-~{}~ 27.05.10 18:29:

И то, что сериализовано на одном сервере - на другом из-за этого не ансериализуется.
 
И что
file_put_contents($name,urlencode(serialize($array));
$array=serialize(urldecode(file_get_contents($name));
не помогает?
 
В общем, суть понятна, как решать - тоже.

Так что спасибо за обсуждение.

Ну а в моем случае -хорошо, что вовремя обнаружил.
А то было бы: написал англю версию, отдал переводчикам, потом на локалке подправил чутка, залил обратно - и все потерял...

Большое спасибо всем.
Тему можно закрывать

-~{}~ 27.05.10 18:35:

Да не помогает в силу того, что echo

urlencode("
");

под юникс выводит %0A++, а под винду - %0D%0A++.
 
Что значит в текстовом? ФТП так по-моему, не умеет
Как раз у FTP есть 2 режима, в бинарном ничего не меняется, а в текстовом меняются переводы строк в зависимости от операционки. По умолчанию FTP-клиенты работают на автомате, у них есть список расширений файлов которые нужно заливать в текстовом, остальные заливаются в бинарном.
 
А то было бы: написал англю версию, отдал переводчикам, потом на локалке подправил чутка, залил обратно - и все потерял...
Да нет никаких редакторов! данные из формы.
это только мне кажется, что у автора раздвоение личности?
 
Сверху