用于在PHP中创建pkzip存档的库,而不是ZipArchive?
我正在使用php5编写一些epub创建功能。目前我正在尝试使用ZipArchive,但遇到了一些麻烦。首先,没有设置压缩级别的功能。其次,用于在PHP中创建pkzip存档的库,而不是ZipArchive?,php,zip,epub,Php,Zip,Epub,我正在使用php5编写一些epub创建功能。目前我正在尝试使用ZipArchive,但遇到了一些麻烦。首先,没有设置压缩级别的功能。其次,ZipArchive::addFile()在我使用它时,似乎会无声地失败并创建一个损坏的存档。我一直在使用file\u get\u contents()+ZipArchive::addFromString(),但我更愿意使用文档化的函数来添加文件 除非有人真的愿意帮助我调试这个问题,否则我不会发布代码示例,但我想知道是否有其他库可以在PHP中创建zip(pkz
ZipArchive::addFile()
在我使用它时,似乎会无声地失败并创建一个损坏的存档。我一直在使用file\u get\u contents()
+ZipArchive::addFromString()
,但我更愿意使用文档化的函数来添加文件
除非有人真的愿意帮助我调试这个问题,否则我不会发布代码示例,但我想知道是否有其他库可以在PHP中创建zip(pkzip)存档,您会推荐它们。到目前为止,我已经看到,他们的网站似乎没有加载,但没有太多其他。我还考虑过使用exec()
+zip
(unix命令)。这段代码只在这个特定的linux机器上运行,所以可移植性不是问题
提前感谢您的建议 我会使用exec()和Unix命令。这是一种系统固有的解决问题的方法——unix UTIL总是比PEAR的同类产品领先一两步 是一个不错的选择,如果你可以访问该站点,zlib是它唯一的依赖项。这可能是暂时的,在圣诞节和新年之间是可以到达的
即使与ZipArchive相比,它也相当高效
编辑
您说ZipArchive的addFile()方法有问题。这是在Windows环境中,还是在Linux服务器上?我知道在Win32上有一些php_zip库的错误版本可能会导致这个问题,尽管最新版本似乎还可以,而且我在其他平台(甚至是WIN64版本)上也没有遇到过同样的问题。根据您在哪台机器上运行这个库,您可以使用Linux命令行zip。我更喜欢这种小作业。我在linux开发服务器上遇到了问题。实际的addFile调用返回true,但正在添加大小为0的文件,导致存档无法读取。php.net()上有一条注释说,要使用服务器上文件的相对路径,否则会导致错误。我使用的是绝对路径,所以我把它作为最后的手段。你看过对这个问题的回答了吗?啊,我明白了,我想这是我的addFile的问题。谢谢你的链接。如果addFile在尝试添加时确实抛出了一个正确的错误,那就太好了,但是您能做什么呢。但是,我的epub文件仍然有问题,因为存档中的一个文件必须具有0压缩,并且我无法使用ZipArchive设置它。如果没有正确存档此文件,epub将无法在读卡器中正确打开,因此,据我所知,我将不得不使用ZipArchive以外的其他工具来执行此操作。看起来PCLZip站点仍然不可用;但该库确实允许使用PCLZIP_OPT_NO_压缩选项将文件添加到存档。。。我自己也没有使用过这个选项,尽管我对这个库总体上相当满意。我对它唯一的不满是没有内置方法从数据字符串而不是从实际文件名(相当于ZipArchive的addFromString())将文件添加到存档,但我可能最终会扩展/修改类以提供该选项。是的,这是我用来创建epub(addFromString)的方法,但我努力解决了这个问题。我从镜像中获取了PCLZip源代码并将其插入,一切都正常工作,现在我正在生成一个有效的epub。谢谢你的建议:)