Php 如何在Laravel项目中创建gzip文件夹

Php 如何在Laravel项目中创建gzip文件夹,php,laravel,laravel-5,gzip,archive,Php,Laravel,Laravel 5,Gzip,Archive,我想将文件夹及其在Laravel项目中的内容压缩到gzip存档中,并尽可能达到最高的压缩级别 storage_path().'myFolder' 这并不意味着要通过HTTP传输,所以请不要与服务器响应gzip压缩混淆 我只是想要一个档案,但没有找到信息,Laravel是否有任何用于实践的工具,有什么想法?对我来说,这似乎不是Laravel特有的问题。对于普通的zip压缩,可以使用Laravel软件包(即),但是对于gzip,您可能需要查看一下。在我看来,这项工作并不需要自己的软件包 顺便说一下

我想将文件夹及其在Laravel项目中的内容压缩到gzip存档中,并尽可能达到最高的压缩级别

storage_path().'myFolder'
这并不意味着要通过HTTP传输,所以请不要与服务器响应gzip压缩混淆


我只是想要一个档案,但没有找到信息,Laravel是否有任何用于实践的工具,有什么想法?

对我来说,这似乎不是Laravel特有的问题。对于普通的zip压缩,可以使用Laravel软件包(即),但是对于gzip,您可能需要查看一下。在我看来,这项工作并不需要自己的软件包


顺便说一下,您应该使用
storage\u path('myFolder')
来支持
storage\u path().'myFolder'
。这将正确连接路径。

这里有一个帮助函数供您使用

if (!function_exists('gzip')) {
    function gzip($filename, $disk = 'local', $delete_original = false)
    {
        $disk = Storage::disk($disk);
        $data = $disk->get($filename);
        $out_file = "$filename.gz";

        $gzdata = gzencode($data, 9);
        $disk->put($out_file, $gzdata);
        $fp = fopen($disk->path($out_file), "w");
        $result = fwrite($fp, $gzdata);
        fclose($fp);

        if ($result && $delete_original) {
            $disk->delete($filename);
        }

        return $result > 0;

    }
}
在laravel 7.x上为我测试和工作。只需确保您的机器上已启用gzip压缩


Gzip是一种流压缩格式,它没有文件或目录的概念。您需要使用像tar和gzip这样的归档格式,或者使用像Zipfile./bin/bash这样的组合格式<代码>$tar-zcf./archive.tar.gz./myFolder。从php
shell\u exec('tar-zcf[path\u to]/archive.tar.gz[path\u From]/myFolder')
或使用您迄今为止尝试过的方法?