Внутренняя ошибка сервера 500 при загрузке большого zip-файла - PullRequest
1 голос
/ 27 июня 2019

У меня есть программа, которая позволяет мне выбирать файлы для загрузки. Как только файлы выбраны, они помещаются в zip-файл, и zip-файл загружается. После определенного размера около 500 МБ я получаю Внутреннюю ошибку сервера, но она работает без проблем для размеров, которые не так велики.

Я уже сделал memory_limit 4096MB и max_execution_time до 3600. display_errors также включен, но он ничего не показывает. Error_log также пуст.

$zip = new ZipArchive();    
$zip_name = "generated_zips/".time().".zip";  
$zip->open($zip_name,  ZipArchive::CREATE);  
foreach ($file_ids as $file) {  
    if ($file != ""){  
        $db_file = get_file($file);
        if($db_file['isTiff']==1){
            $path = $db_file['file_dir_tiff'];
        }
        else{
            $path = $db_file['file_dir'];
        }
        $zip->addFromString(basename($path), file_get_contents($path));
        $zip->renameName(basename($path), $db_file['fileName']);
    }
}
$zip->close();
if (file_exists($zip_name)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/zip');
    header('Content-Disposition: attachment; filename=$zip_name');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($zip_name));
    readfile($zip_name);
    ob_clean();
    ob_end_flush();
    unlink($zip_name);
    exit;
}
...