簡體   English   中英

PHP 7 ZipArchive :: OVERWRITE不工作

[英]PHP 7 ZipArchive::OVERWRITE not working

這可能是新版本中的一個錯誤...或者某些東西改變了ZipArchive的行為並且我的代碼只是舊的,但是,當使用CREATE標志時,以下代碼有效,但在使用OVERWRITE標志時會中斷。 它在PHP 5.6下工作正常,但在PHP 7.0下我收到以下錯誤:

    Warning: ZipArchive::close(): Invalid or uninitialized Zip object

原始代碼:

foreach( glob($sourcedir.'*.[zZ][iI][pP]') as $zippath)
{
    // create daily zip file
    $zipname = preg_replace('~'.$sourcedir.'~','',$zippath);
    $zipname2 = preg_replace('~\.zip~','',$zipname);

    $zip = new ZipArchive();
    $ret = $zip->open($xmlzip.$zipname2.'_contact_xml.zip', ZipArchive::OVERWRITE);

    // move xml files to daily zip file created above
    if ($ret !== TRUE) {
        printf('Failed with code %d', $ret);
    } else {

      foreach(glob($source_file_path.'*.[xX][mM][lL]') as $xmlpath){
         $zip->addFile($xmlpath, preg_replace('~'.$source_file_path.'~','',$xmlpath));
      }

    }

    $zip->close();
}

有任何想法嗎?

傳遞ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE作為標志。

這是一個錯誤: https ://bugs.php.net/bug.php?id = 71064(自PHP 5.6.16起)

ZipArchive類的open()方法存在問題。 在PHP的早期版本中,當傳遞給方法的唯一標志是ZipArchive::OVERWRITE ,該方法還創建了不存在的存檔。

從PHP 5.6開始,單獨的OVERWRITE標志無法創建破壞兼容性的新檔案。

暫無
暫無

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

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