Kendisine iletilen fazla sadece dosyaları silme bağlantısını kesme

2 Cevap php

Bazı görüntüler ile bir zip dosyası içine bu dosyayı yerleştirerek ve sonra unlink.Strange şey ile SQL dosya silme, bir SQL dosyası oluşturma ediyorum o da zip dosyasını siler olduğunu.

if (file_put_contents($sqlFileName, $sql) !== false) {
        $zip = new ZipArchive;
        if ($zip->open($workingDir . $now . '.zip', ZipArchive::CREATE) === true) {
            $zip->addFile($sqlFileName, basename($sqlFileName));
            if(! empty($images)) {
                foreach ($images as $image) {
                    $zip->addFile($imagesDir . $image, $image);
                }
            }
        }
        unlink($sqlFileName);
}

2 Cevap

Yazılı olarak http://www.php.net/manual/en/function.ziparchive-addfromstring.php:

Jared kippage dot com 03-Eylül-2009 01:08

It may seem a little obvious to some but it was an oversight on my behalf.

If you are adding files to the zip file that you want to be deleted make sure you delete AFTER you call the close() function.

If the files added to the object aren't available at save time the zip file will not be created.

Basit çözüm: unlink($sqlFileName); çağırır ve önce ekleyin $zip->close() ince olmalıdır.

unlink() never birden fazla dosyayı siler. Kodunuz için $zip->close() vb Append, sıkıştırma yapmak, temelde arşiv başlıklarını tamamlaması PHP söyler - Eğer arşiv kapatmak yok çünkü zip dosyası, ilk etapta oluşturulan değildir.

UPDATE Ben sadece ZipArchive :: close () yazısının sonunda otomatik olarak çağrılır, bu nedenle bu sadece iki seçenek bırakır okumak: için çağrı zip->open() başarısız Ya. Boş bir arşive size bırakarak - ya da kod foreach döngüsüne girmeden değildir. Boş arşivleri a comment in the function's doc göre oluşturulan alamadım.