php zip-извлечение делает файл пустым - PullRequest
0 голосов
/ 17 июня 2020

Хорошо, это сводит меня с ума ... Я абстрагировал код, потому что он взят из большого проекта. Но в моем проекте я закончил комментировать все, и осталось только это, что все еще вызывает проблемы, и я понятия не имею, почему.

$f = fopen('tmp/'.$name.'.zip', 'wb');
fwrite($f, $myzip);
fclose($f); //I can open this file manually and everything is fine
$zip = new ZipArchive;
$res = $zip->open('tmp/'.$name.'.zip'); //$res is "1"
$zip->extractTo("final/" . $unique);
$zip->close();

Как видите, я пишу zip-файл в /tmp по адресу На этом этапе я могу открыть файл вручную, и он содержит все файлы правильного размера. Но после того, как я извлек его в /final, по какой-то причине некоторые файлы стали пустыми ... Есть идеи, что могло вызвать это?

1 Ответ

0 голосов
/ 17 июня 2020

Вы можете сделать это, выбрасывая Exception во время открытия zip-архива,

function DecompressFile()
{
    $zip = new ZipArchive;
    if ($zip->open('tmp/'.$name.'.zip') === TRUE) {
        $zip->extractTo("final/" . $hwidDir);
        $zip->close();
        return 'completed';
    }
    else {
        throw new Exception ("Decompress operation from ZIP file failed.");
    }
}
...