![](/img/trans.png)
[英]Warning: ZipArchive::close(): Failure to create temporary file: Unknown error
[英]Why am I getting error "Failure to create temporary file" when trying to close a zip file?
您好,这是我第一次在这里发帖,我不确定它是如何工作的,但我在下面包含了我的代码。 我将不胜感激一些帮助。
我无法关闭我的 zip 文件。 我创建的标记(打印语句)正在执行。 我只收到 $zip->close() 的错误。
作为参考,我有 PHP 7.4.24 版并且我使用的是 Mac。 当我的同事在他的 Windows 系统上运行它时,它执行了。
这是我的浏览器中显示的错误:
警告:ZipArchive::close():创建临时文件失败:第 55 行 /Applications/XAMPP/xamppfiles/htdocs/nameOfMyFolder/folderzip.php 中的权限被拒绝
<?php
// name of directory (folder)
$pathdir = "/Applications/XAMPP/xamppfiles/htdocs/nameOfMyFile/";
//name of zip file to be created when zipped
$zipcreated = "archive.zip";
// new zip class
$zip = new ZipArchive;
if (extension_loaded("zip")){
echo "Zip extension is loaded";
}
//phpinfo();
// PHP Version 7.4.24
// Create a zip file and open it, check if it worked
if($zip -> open($zipcreated, ZipArchive::CREATE ) == TRUE) {
// Store the path into the variable
// opendir opens a directory handle
$dir = opendir($pathdir);
while($file = readdir($dir)) {
// is_file checks if specified file is a regular file
echo $pathdir.$file;
if(is_file($pathdir.$file)) {
$zip -> addFile($pathdir.$file, $file);
echo "File/s copied";
} else {
//echo "File not copied";
}
//echo "While executed";
}
echo "Out of while loop";
$zip->close();
//$zip -> ZipArchive::close();
//zip_close(resource ($zip));
//$zip -> getStatusString();
} else {
die ("Can't open $zipcreated");
}
?>
我已经重构了您的代码,它现在似乎可以正常工作了。 请注意我是如何使用“ !
not”条件的,这样代码可以更快地退出并且不需要嵌套。
<?php
$folder_to_archive = "/path/to/your/folder/";
$zip_file = "archive2.zip";
if (!extension_loaded("zip"))
die("Zip extension could not be loaded" . PHP_EOL);
$zip = new ZipArchive;
if ($zip->open($zip_file, ZipArchive::CREATE) !== true)
die('Could not create Zip File' . PHP_EOL);
$dir = array_diff(scandir($folder_to_archive), ['.','..']);
foreach ($dir as $file) {
$full_filename = $folder_to_archive . $file;
if (!is_file($full_filename))
continue;
$zip->addFile($full_filename, $file);
}
$zip->close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.