创建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!";
}
我在做什么错,我该如何解决它?
答
可能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不会产生错误。
- 确保您要添加到zip的每个文件都是有效的。即使 一个文件在
zip->close
被调用时不可用,那么存档 将失败,并且不会创建您的zip文件。 - 如果你的文件夹没有 有写权限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!";
}
“RESULT TRUE”和“FILE ADDED”输出结果是?你在找正确的文件夹吗?你是否启用了错误报告?问题,问题:P – PeeHaa 2011-01-10 20:39:46
您是否检查过PHP对该目录有写权限? – alexn 2011-01-10 20:40:04
Nooo! :D亚历山大是对的!该脚本没有足够的访问权限... thx解决。如果你很快发布,我会标记为正确的答案......? – 2011-01-10 20:43:32