我一开始尝试编写一些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存储桶上的文件?或者是提供此功能的好工具?
欢呼声
答案 0 :(得分:13)
你可以在这里找到它: http://www.php.net/manual/en/zip.constants.php
错误11是“无法打开文件”
答案 1 :(得分:1)
在我的情况下,我在打开一个zip文件进行阅读时收到了错误代码11。路径和权限都可以。 我刚刚将DIRECTORY SEPARATOR从反斜杠(\)更改为正斜杠(/)并且工作正常。奇怪的是正斜杠(/)路径在Linux中,因为我在Windows Server 2003中工作。