You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用ZipArchive解压Zip文件夹失败问题排查

PHP ZipArchive解压失败排查与解决

核心问题分析

  1. 打开模式错误:你使用ZipArchive::CREATE | ZIPARCHIVE::OVERWRITE打开文件时,这个模式会创建新的空压缩包(若文件不存在)或覆盖已有压缩包,而非读取原有的压缩文件——这就是numFiles为0的直接原因,你实际操作的是一个新建的空zip文件。
  2. 文件名错误:/srv/files/shape/Dossier514.zip.zip存在重复后缀,说明$pathShapeFile指向的不是你要解压的原压缩包,而是一个新生成的空文件,自然无法解压出内容。

解决步骤

1. 修正目标文件名

检查$pathShapeFile的赋值逻辑,确保它指向正确的原压缩文件:

$pathShapeFile = '/srv/files/shape/Dossier514.zip'; // 去掉重复的.zip后缀

2. 调整ZipArchive打开模式

读取已有压缩包时,使用只读模式(ZipArchive::RDONLY)即可,无需创建或覆盖:

$zip = new ZipArchive();
// 只读打开原压缩包
if ($zip->open($pathShapeFile, ZipArchive::RDONLY) === true) {
    // 先确认压缩包内有文件
    if ($zip->numFiles > 0) {
        // 执行解压
        $zip->extractTo('/你的目标解压路径');
        echo '解压完成';
    } else {
        echo '原压缩包本身为空';
    }
    $zip->close();
} else {
    echo '无法读取原压缩文件,请检查文件路径或读取权限';
}

额外排查点

  • 手动打开原压缩包Dossier514.zip,确认其本身不是空文件。
  • 确保PHP进程拥有原压缩文件的读取权限(仅目标文件夹写入权限不够)。

内容的提问来源于stack exchange,提问作者Laura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:32:13