在 PHP 中解压缩 Gzip 文件有几种方法,以下是常用的几种方式:

方法一:使用 gzdecode() 函数

$compressedData = file_get_contents('compressed_file.gz');
$uncompressedData = gzdecode($compressedData);
file_put_contents('uncompressed_file.txt', $uncompressedData);

方法二:使用 zlib 扩展

// 打开 gzip 文件
$gz = gzopen('compressed_file.gz', 'rb');
$uncompressedData = '';

// 读取并解压缩
while (!gzeof($gz)) {
    $uncompressedData .= gzread($gz, 4096);
}

gzclose($gz);
file_put_contents('uncompressed_file.txt', $uncompressedData);

方法三:使用 file_get_contents() 和 zlib 流包装器

$uncompressedData = file_get_contents('compress.zlib://compressed_file.gz');
file_put_contents('uncompressed_file.txt', $uncompressedData);

注意事项

  1. 确保你的 PHP 安装了 zlib 扩展(大多数情况下默认安装)

  2. 对于大文件,建议使用方法二或三,因为它们可以分块处理

  3. 如果遇到内存问题,考虑使用临时文件或流式处理

检查 zlib 支持

if (!function_exists('gzdecode')) {
    // 处理没有 gzdecode 的情况
    // 可以自定义实现或使用其他方法
}

选择哪种方法取决于你的具体需求、PHP 版本和服务器配置。方法三通常是最简洁的解决方案。