@buranich

Почему readfile отдаёт битый файл?

Для подсчета количества скачиваний файлов приходится отдавать файлы через readfile. До недавнего времени все работало как часы (что может быть проще?). Однако с недавних пор при скачивании стали отдаваться битые файлы (скачиваются первые несколько килобайт файла, как правило 7-10). В чем причина, непонятно.

Код для отдачи файла выглядит так:

$fileOriginal = "{$path}/{$file->hash}";

set_time_limit(0);
if (ob_get_level()) {
	ob_end_clean();
}

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file->filename . '"' );
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Accept-Ranges: bytes');
header('Content-Length: ' . filesize($fileOriginal));
readfile($fileOriginal);

return;


На сервере стоит Ubuntu, связка nginx+php-fpm.

В чем может быть причина?
  • Вопрос задан
  • 2482 просмотра
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
Используйте для этого X-Accel-Redirect
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы