Я получаю ошибку «плохой шлюз 502» при попытке загрузить созданный сервером .zip-файл
Я выделил строку, которая вызывает ошибку; его:
$zip->addFile($thumb->loadVersion($version['id']), $rank . "_" . $thumb->filename);
Вот мой код. Мой скрипт просматривает все файлы .jpg, загруженные пользователями, объединяет их в один большой .zip-файл и отправляет заголовки загрузок для zip-файла.
function downloadGalleryZip() { $tmpfile = tempnam("tmp", "zip"); $zip = new ZipArchive(); $res = $zip->open($tmpfile, ZipArchive::OVERWRITE); if ($res === TRUE) { // loop through gallery $sql = "SELECT * FROM files_versions WHERE file_id = ". $this->fileId . " AND deleted_on IS NULL ORDER BY rank ASC"; $result = db_query($sql); $rank = 0; while ($version = mysql_fetch_array($result)) : $rank ++; $rank = str_pad($rank, 3, '0', STR_PAD_LEFT); $thumb = new fancyFile(); $zip->addFile($thumb->loadVersion($version['id']), $rank . "_" . $thumb->filename); endwhile; // $zip->addFromString('000_info.txt', 'Dieser Ordner wurde am ' . date("dmY", time()) . ' heruntergeladen.'); $zip->close(); } $filename = getCaptionFromFile($this->fileId) . ".zip"; header("Connection: Keep-Alive"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=" . $filename); header("Content-Type: application/zip" ); 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($tmpfile)); ob_clean(); flush();
}
У меня нет абсолютно никакого опыта с «плохими ошибками шлюза», ваша помощь очень ценится!
Спасибо, Мэтт