这可能是新版本中的一个错误...或者某些东西改变了ZipArchive的行为并且我的代码只是旧的,但是,当使用CREATE标志时,以下代码有效,但在使用OVERWRITE标志时会中断.它在PHP 5.6下工作正常,但在PHP 7.0下我收到以下错误:
Warning: ZipArchive::close(): Invalid or uninitialized Zip object
Run Code Online (Sandbox Code Playgroud)
原始代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?