我正在创建一个SQL文件,将此文件放入带有一些图像的zip文件中,然后使用unlink删除SQL文件。删除它也会删除zip文件。
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);
}
答案 0 :(得分:2)
正如http://www.php.net/manual/en/function.ziparchive-addfromstring.php所述:
jared at kippage dot com 03-Sep-2009 01:08
看起来似乎有点明显 一些,但这是对我的疏忽 代表。
如果要将文件添加到zip中 要删除的文件 确定你在打电话后删除 close()函数。
如果文件已添加到对象中 拉链时保存时间不可用 将不会创建文件。
简单的解决方案:在致电$zip->close()
之前添加unlink($sqlFileName);
,您应该没问题。
答案 1 :(得分:1)
unlink()
从不删除多个文件。您的zip文件不是首先创建的,因为您没有关闭存档 - 这基本上告诉PHP包装存档的标题,进行压缩等。将$zip->close()
附加到您的代码中。
更新我刚刚读到在脚本末尾自动调用ZipArchive :: close(),因此只留下两个选项:您对zip->open()
的调用失败。或者你的代码没有进入foreach循环 - 留下一个空档案。不会根据a comment in the function's doc创建空档案。