我知道\Phar
和\PharData
存在,但我到目前为止他们提供的方法遇到了一些麻烦。在确定哪个Phar*::method()
用于尝试提取存档并对其包含的文件进行处理之前,我仍然需要通过任何方式检测mime类型/文件类型。
是否有一个可以包含的“简单按钮”类(可能是通过作曲家提供的一些软件包)可以在非常高的级别处理这个问题?或者我到目前为止没有正确使用Phar
和朋友或者需要重新RTM?
基本上,我想要执行以下操作(这是我现在控制的CLI脚本,所以安全性虽然对于这类事情很重要,但现在仍然在后面):
.tar
,.gz
,.tar.gz
或.zip
。我是否有一个“简单按钮”,我不知道,或者我是否需要构建一些逻辑,尽可能猜测它可能是什么类型的存档,然后尝试使用适当的Phar*
方法试图提取它的文件并做我需要的任何工作吗?
我希望我的写作方式有道理。如果有人已基本完成了所有这些,我试图避免重新发明这个迷你项目的轮子。
答案 0 :(得分:0)
如果您不需要纯PHP,并且您的代码在Linux机器上运行,那么
exec('uncompress [-cfv] [file...]');
或
exec('unzip filename.zip -d destination');
将提取文件并使其可用于php。 当然,您需要检查扩展名(zip,tar等)才能调用正确的命令
答案 1 :(得分:0)
所以,在继续研究这个问题的同时,我最终在google搜索结果中看到了我自己的(这个)SO问题,这让我很生气。所以,万一有人偶然发现这个寻找一个好的解决方案,我已经通过搜索https://packagist.org/search/?q=archive找到了一对(见图):
其中一些似乎很有希望。
<强> wapmorgan / UnifiedArchive:强>
wapmorgan/UnifiedArchive (github source)
特色(乍一看):
pear/archive_tar
的一项要求(其中包括一些要求)
更多实用工具类也来自梨)。<强>炼金术/比比强>
alchemy-fr/Zippy (github source)
特色(乍一看):
guzzle\guzzle
(流行的php http客户端)集成,这对某些人来说可能是一个优势。<强> zetacomponents /存档强>
zetacomponents/Archive (github source)
特色(乍一看):
免责声明:在撰写本文时,我实际上只尝试了wapmorgan/UnifiedArchive
,到目前为止,它正是我所寻找的。 p>
无论如何,我希望这可以帮助任何可能偶然发现这个问题的人。