Я подозреваю, что вы попали в ошибку ограничения памяти. Обычно readfile
избегает использования большого количества памяти, но в зависимости от ваших настроек может потреблять ОЗУ в процессе. Проверьте свои журналы ошибок, чтобы убедиться, что вы видите ошибку выделения памяти, и если вы видите ее, попробуйте избавиться от while
и ob_flush
и flush
и просто добавьте что-то вроде этого после заголовков:
if (ob_get_level()) {
ob_end_clean();
}
readfile($url);
Кроме того, не накачивайте лимит памяти до 5 ГБ ... если он работает правильно, вам не нужно почти никакой памяти.
Если это не так, можете ли вы подтвердить, что вы используете удаленно размещенный ZIP-файл (т. е. у вас нет прямого доступа к ZIP-файлу на текущем сервере)?