Readfile читает 0 байтов из большого файла?
Я пытаюсь отправить большой файл черезreadfile()
.
Тем не менее, ничего не отправляется в браузер иreadfile()
возвращается0
(не false
!).
Файл, который я пытаюсь отправить, имеет размер 4 ГБ и может быть прочитан PHP.
Я устанавливаюset_time_limit(0)
чтобы разрешить длительный процесс загрузки.
Я попытался отправить файл в хитрый цикл сfread()
в 4K кусках иecho
, но это прерывает случайным образом (без ошибок) после 500 - 2500 MiB загруженных и никогда не удается завершить загрузку.
Следующий тестовый код
$f = '/var/www/tmp/largefile.dat';
var_dump(file_exists($f));
var_dump(is_readable($f));
var_dump(filesize($f));
$rf = readfile($f);
var_dump($rf);
производит следующий вывод:
bool (правда) bool (правда) int (4294967296) int (0)
Тестовый файл был создан с помощью следующей команды:
dd if=/dev/zero of=largefile.dat bs=1M count=4096
Что я делаю не так и как мне это исправить?
Редактировать 2014-07
Обновление до новой версии Apache2 решило проблему на данный момент.