创建 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);
我用这几行创建了一个空的 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);