PHP ZipArchive状态值是什么意思?

时间:2010-08-02 15:52:27

标签: php ziparchive

我一开始尝试编写一些PHP代码,在EC2服务器上的Linux机器上运行,该服务器将从我的S3存储桶中读取文件,压缩它们然后将zip文件写回存储桶。

我甚至在EC2实例的本地磁盘上的某些图像中创建了一个简单的zip存档时遇到了问题,我正在使用脚本从PHP手册中在线测试这个想法,并尝试了来自David Walsh的脚本 - http://davidwalsh.name/create-zip-php看起来很棒。既没有产生实际的zip文件,也没有给我不同的状态结果 -

php手册中的第一个片段(我添加变量$ thisdir) -

<?php
$zip = new ZipArchive();
$filename = "test112.zip";
$thisdir = "/uploads/";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
    exit("cannot open <$filename>\n");
}    
$zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt.\n");
$zip->addFile($thisdir . "/too.php","/testfromfile.php");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
?>

输出=

  

numfiles:2状态:11

我在'uploads'文件夹中看不到任何zip文件

我尝试的第二段代码(我不会在这里发布代码) - 我传递真实文件并返回

  

zip存档包含2个状态为0

的文件

有什么状态信息。我通过查看phpinfo()的输出来检查是否安装了正确的库;在ZIP标题下我看到 -

  

启用Zip支持
扩展版本$ Id:php_zip.c,v 1.1.2.43 2008/01/18 00:51:38 pajoye Exp $
  Zip版本1.8.11
  Libzip版本0.8.0兼容

我已经使用我正在执行的代码检查了文件PHP文件的权限,并将它们设置为777,就像我尝试添加ziparchive的文件夹一样。我知道这不应该留在777.

为什么我看不到zip文件的任何想法?状态值是什么意思?有没有一个很好的教程可以使用PHP来压缩Amazon S3存储桶上的文件?或者是提供此功能的好工具?

欢呼声

2 个答案:

答案 0 :(得分:13)

你可以在这里找到它: http://www.php.net/manual/en/zip.constants.php

错误11是“无法打开文件”

答案 1 :(得分:1)

在我的情况下,我在打开一个zip文件进行阅读时收到了错误代码11。路径和权限都可以。 我刚刚将DIRECTORY SEPARATOR从反斜杠(\)更改为正斜杠(/)并且工作正常。奇怪的是正斜杠(/)路径在Linux中,因为我在Windows Server 2003中工作。