[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: пхп портит файлы
maxims
есть функция

function readfile_chunked($filename, $retbytes=true) {
$chunksize = 1*(1024*1024); // 1MB chunks - must be less than 2MB!

//$chunksize = filesize($filename);

$buffer = '';
$cnt =0;
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}

while (!feof($handle)) {
@set_time_limit(60*60); //reset time limit to 60 min - should be enough for 1 MB chunk
$buffer = fread($handle, $chunksize);
echo $buffer;
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}

$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}


она отдаёт файлы браузеру(файлы различные от картинок до word-файлов)

после переустановке сервера, она вроде файлы отдает(размер совпадает) но портит их, файлы просто не открываются, вроде что-то с кодировкой.

В чём может быть дело?




Спустя 4 часа, 12 минут, 5 секунд (13.09.2010 - 10:49) maxims написал(а):
up

Спустя 53 минуты, 58 секунд (13.09.2010 - 11:43) SlavaFr написал(а):
ну возьми бинерный едитор и посмотри чем файлы отличаются.

возможно ошибка вовсе не в этой функции а в хедерах запрятана.

Спустя 18 часов, 54 минуты, 35 секунд (14.09.2010 - 06:38) maxims написал(а):
в начало файла подписывает два байта 0а 0а, через бинарный редактор убираю их файл начинает открываться

Спустя 1 час, 51 минута, 13 секунд (14.09.2010 - 08:29) linker написал(а):
Я могу ошибаться, но мне кажется это из -за этой хрени 'rb', а может где-то в начальных заголовках лишние переводы строк.

Спустя 15 часов, 53 минуты, 50 секунд (15.09.2010 - 00:23) dr.5y51em написал(а):
Я конечно не супер спец, но по моему два байта в начало документа дописывается с UTF8 (BOM). Попробуй, открой скрипт через какой нибудь редактор (Notepad++, AkePad) и сохрани в UTF8 (без BOM). rolleyes.gif

Спустя 4 часа, 30 минут, 46 секунд (15.09.2010 - 04:53) maxims написал(а):
exit('123');   // Just send it out raw
@header('Content-Length: '.$filesize);
@header('Content-Type: '.$mimetype);

while (@ob_end_flush()); //flush the buffers - save memory and disable sid rewrite
if ($pathisstring) {
echo $path;
}else {
readfile_chunked($path);
}


этот код присылает браузеру в байтах 31 32 33 0a 0a а должен 31 32 33
при этом хедеры не выполняются, значит дело не в хедерах.

этот код
   // Just send it out raw
@header('Content-Length: '.$filesize);
@header('Content-Type: '.$mimetype);
exit('123');
while (@ob_end_flush()); //flush the buffers - save memory and disable sid rewrite
if ($pathisstring) {
echo $path;
}else {
readfile_chunked($path);
}

присылает в байтах 0a 0a 31 32 33

ничего не понимаю((((((


P.S: байт 0a - это символ перехода на новую строку, "энтер" вообщем.

Спустя 4 часа, 59 минут, 49 секунд (15.09.2010 - 09:53) maxims написал(а):
up

Спустя 4 минуты, 34 секунды (15.09.2010 - 09:58) Basili4 написал(а):
мож как то так попробывать

$mimetype=trim($mimetype,"\n");

Спустя 21 минута, 5 секунд (15.09.2010 - 10:19) ZSH написал(а):
Цитата
она отдаёт файлы браузеру(файлы различные от картинок до word-файлов)

после переустановке сервера, она вроде файлы отдает(размер совпадает) но портит их, файлы просто не открываются, вроде что-то с кодировкой.

В чём может быть дело?


после установки не включена автоматическая буферизация вывода

Спустя 40 минут, 6 секунд (15.09.2010 - 10:59) twin написал(а):
Я слышал где то, что некоторые сервера принудительно добавляют перенос в конец файла.
А чего readfile() не устроила?

Спустя 9 минут, 24 секунды (15.09.2010 - 11:08) ZSH написал(а):
Цитата
@header('Content-Length: '.$filesize);
@header('Content-Type: '.$mimetype);


убрать собачки и будут ошибки.

Спустя 17 часов, 45 минут, 39 секунд (16.09.2010 - 04:54) maxims написал(а):
Проблема решена!!!!!! ))))))))))))) Ураааааа!!!!!!!!!
Как всегда оказалось всё просто, в одной из подключаемых библиотек после тега
?>
стояло два знака переноса.
Почему-то раньше серв их не отправлял.......

Спустя 3 часа, 32 минуты, 9 секунд (16.09.2010 - 08:26) Basili4 написал(а):
maxims
избежания именно этого рекомендуют не ставть ?>

Спустя 45 минут, 16 секунд (16.09.2010 - 09:11) ZSH написал(а):
Цитата
стояло два знака переноса.
Почему-то раньше серв их не отправлял.......


отправлял, но уже после заголовков.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.