创建 Zip returns 读取错误

Creating Zip returns read error

我用这几行创建了一个空的 zip 文件,我将把东西放进去。

$zip = new ZipArchive();
$generatedname = uniqid().'.zip';
$res = $zip->open('tmp/'.$generatedname, ZipArchive::CREATE);

$res 是 5,这对应于读取错误,当我去添加文件时,我得到一个错误,即 zip 未初始化。这段代码在我的本地机器上有效,但在我的 iis 服务器上无效,所以这是某种配置错误?

我可以用 fopen 和 fwrite 读写文件,所以我认为这与 rw 权限无关,所以我有点没有解决问题的想法。

好的,我真的想通了。 问题实际上在于创建 zip 的位置。我在我的工作目录中将其设置为 /tmp,因为我要下载该文件然后立即将其删除。

所以我找到了 this 文章,该文章讨论了使用一个目录,该目录将始终由 php 写入,因此在系统临时目录中创建我的 zip 文件似乎已经成功了。这是更新后的代码:

chdir( sys_get_temp_dir() );

$zip = new ZipArchive();
$generatedname = uniqid().'.zip';
$zip->open($generatedname, ZipArchive::CREATE);