Содержимое zip очищается после его загрузки в php

avatar
tims
8 августа 2021 в 18:57
60
0
2

Проблема в том, что при загрузке zip его содержимое удаляется. Я использую этот код для создания zip и добавления в него файлов:

    $zipName = "full path";
    $zip = new ZipArchive();
    $zip->open($zipName, ZipArchive::CREATE);
    for ($i = 0; $i < $length; $i++) {
        if ($ausgabeArray[$i]["filePath"] != '') {
            $zip->addFromString(basename($ausgabeArray[$i]["filePath"]), file_get_contents($ausgabeArray[$i]["filePath"]));
        }
    }
    $zip->close();
    for ($i = 0; $i < $length; $i++) {
        unlink($ausgabeArray[$i]["filePath"]);
    }

И я использую этот код для загрузки zip:

        header("Content-disposition: attachment; filename=" . $name);
        header("Content-type: application/".$endung);
        readfile($path);
        unlink($path);
        //name = basename from the path of the zip
        //path = full path to the zip
        //endung = zip

Это нормально работало на старом сервере, но после изменения перестало работать. Я остановил код один раз перед readfile($path); и просмотрел zip в папке и загрузил его оттуда, все работало нормально таким образом, но это, конечно, не вариант для тех, у кого нет разрешения на каталоги сервера.

Мы используем этот сервер:

  1. Ubuntu 20.04.2 LTS
  2. Apache/2.4.41 (Ubuntu)
  3. 7.3.29 Приложение FPM

Я не уверен, связана ли проблема со сменой сервера или только с моим кодом, но я ничего не менял, и теперь он больше не работает, поэтому я думаю, что это возможно. Я надеюсь, что у кого-то была эта проблема раньше и может помочь мне. Спасибо!

Источник
Rain
8 августа 2021 в 21:06
1

Вы пробовали var_dump($ausgabeArray[$i]["filePath"]) внутри первого цикла for? Кстати, почему вы используете ZipArchive::addFromString вместо ZipArchive::addFile?

Rain
8 августа 2021 в 21:14
1

Я предполагаю, что $ausgabeArray, вероятно, пусто. Если $length = count($ausgabeArray) , то $length может быть 0

tims
9 августа 2021 в 17:57
0

Я попробовал var_dump($ausgabeArray[$i]["filePath"]), он содержит то, что я ищу, zip создан правильно и содержит все значения, которые мне нужны, только когда я загружаю его через PHP, содержимое удаляется, когда я загружаю его вручную, все в порядке :(

Ответы (0)