创建zip时没有错误,但没有创建

问题描述:

我编写了这段代码来创建一个ZIP文件并将其保存。但不知何故,它只是不显示任何错误,但它也不会创建ZIP文件。这里是代码:创建zip时没有错误,但没有创建

$zip = new ZipArchive; 
$time = microtime(true); 
$res = $zip->open("maps/zips/test_" . $time . ".zip", ZipArchive::CREATE); 
if ($res === TRUE) { 
    echo "RESULT TRUE..."; 
    $zip->addFile("maps/filename.ogz","filename.ogz"); //Sauerbraten map format 
    $zip->addFromString('how_to_install.txt', 'Some Explanation...'); 
    $zip->close(); 
    $zip_created = true; 
    echo "FILE ADDED!"; 
} 

我在做什么错,我该如何解决它?

+0

“RESULT TRUE”和“FILE ADDED”输出结果是?你在找正确的文件夹吗?你是否启用了错误报告?问题,问题:P – PeeHaa 2011-01-10 20:39:46

+1

您是否检查过PHP对该目录有写权限? – alexn 2011-01-10 20:40:04

+0

Nooo! :D亚历山大是对的!该脚本没有足够的访问权限... thx解决。如果你很快发布,我会标记为正确的答案......? – 2011-01-10 20:43:32

可能apache或php没有权限在该目录中创建zip存档。从ZipArchice::open一个评论:

如果你正在写保存到该目录或 没有正确 权限设置,你不会得到任何 错误消息和它看起来像 一切工作罚款...除了它 不会改变!

而是确保你收集ZipArchive :: close()的返回值 。 如果它是错误的...它不起作用。

添加一个else子句到您的if语句和转储$水库看到的结果:

if($res === TRUE) { 
    ... 
} else { 
    var_dump($res); 
} 

掰成步骤。

if ($res === TRUE) { 

    check if file_exist 

check if addFile give any error 
} 

if($zip->close()) 
{ 
$zip_created = true; 
    echo "FILE ADDED!" 
} 

检查邮编的phpinfo启用或不:)

退房您的每一个文件的存在调用$ zip-> addFile否则拉链不会产生之前,没有错误信息会被显示。

if(file_exists($fichier->url)) 
{ 
    if($zip->addFile($fichier->url,$fichier->nom)) 
    { 
     $erreur_ouverture = false; 
    } 
    else 
    { 
     $erreur_ouverture = true; 
     echo 'Open error : '.$fichier->url; 
    } 
} 
else 
{ 
    echo 'File '.$fichier->url.' not found'; 
} 

有2种情况,当zip不会产生错误。

  1. 确保您要添加到zip的每个文件都是有效的。即使 一个文件在
    zip->close被调用时不可用,那么存档 将失败,并且不会创建您的zip文件。
  2. 如果你的文件夹没有 有写权限zip不会报错。它将完成 ,但不会创建任何内容。

即使具有完整的书写/阅读权限,我也有完全相同的问题。

通过创建“.ZIP”文件解决它传递给ZipArchive之前手动:

$zip = new ZipArchive; 
$time = microtime(true); 
$path = "maps/zips/test_" . $time . ".zip" 

touch($path); //<--- this line creates the file 

$res = $zip->open($path, ZipArchive::CREATE); 
if ($res === TRUE) { 
    echo "RESULT TRUE..."; 
    $zip->addFile("maps/filename.ogz","filename.ogz"); //Sauerbraten map format 
    $zip->addFromString('how_to_install.txt', 'Some Explanation...'); 
    $zip->close(); 
    $zip_created = true; 
    echo "FILE ADDED!"; 
} 

其中一个原因zip文件未创建是由于缺少检查,如果要添加文件,而不是目录。

if (!$file->isDir()) 

我找到了解决方案here