簡體   English   中英

PHP ZipArchive 類不創建存檔

[英]PHP ZipArchive class does not create archive

我正在嘗試使用以下代碼創建選定文件的存檔

$zip_in = new \ZipArchive;
if ($zip_in->open('input.zip') === TRUE) {
    $files = array();
    for ($loop = 0; $loop < $zip_in->numFiles; $loop++) {
        $files[] = $zip_in->getNameIndex($loop);
    }
    $zip_in->extractTo('workspace');
    $zip_in->close();
    /**
     * Changes done to files extracted inside WORKSPACE DIR above
     */
    chdir('workspace');
    $zip_out = new \ZipArchive();
    $zip_out->open('output.zip', \ZipArchive::CREATE);
    foreach ($files as $file) {
        $zip_out->addFile($file);
    }
    $zip_out->close();
}

在這里,我試圖將input.zip存檔提取到工作區目錄,以更改 zip 存檔中包含的文件。 在此之后,我想再次將所有文件壓縮回output.zip存檔。

編輯$files用於存儲提取的文件名的變量$files不會在任何地方觸及。 文件名是硬編碼的,不通過任何變量接收。

最后保存output.zip存檔的最后一行在控制台上給出了以下警告:

PHP 警告:ZipArchive::close(): 讀取錯誤:是第 100 行 /home/user/zip.php 中的目錄

我無法理解這次失敗的原因。 錯誤信息不清楚。 這次失敗的原因是什么?

編輯:

根據要求,添加了調用上述存檔處理程序的代碼。

class A {
    public function A1 () {
        /**
         * the code above
         */
    }
}

class B {
    public function B1 {
        $a = new A();
        $a->A1();
    }
}

這是 CakePHP 3 應用程序的一部分。 根據提示注釋,當我在 CakePHP 3 應用程序之外獨立運行代碼時,它工作得很好。 但是在 CakePHP 應用程序內部存在一些問題。 我正在添加額外的標簽來突出 CakePHP 社區中的問題。

因為您的代碼是錯誤的,並且您正在用文件替換 ZipArchive 的實例:

$zip = addFile($file);

用。。。來代替 :

$zip->addFile($file);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM