在上一篇文章中,苏南大叔和大家一起学习了phar文件的创建,https://newsn.net/say/php-phar-create.html。在本篇文章中,苏南大叔将继续讲述phar文件的还原。因为我们大家已经知道了:phar文件其实就是一系列php(及其它类型)文件的结合体。

所以,如果您拿到了一个phar文件后,肯定会很好奇,里面到底有些什么东西。那么本文的内容,就是为了您满足您的好奇心,而准备的。当然,如果你想修改某个别人提供的phar文件的话,本文的内容也是你需要查看的。

解压无压缩的代码到文件夹

对于没有使用任何压缩手段的phar文件,使用下面的代码即可顺利解压出源代码到文件夹。文件夹是自动创建的。支持自动创建多层文件夹。这里的压缩手段,指的是创建phar文件时的函数方法compressFiles

$phar = new Phar('phar.phar');
//$phar->extractTo('phar2/source/');
$phar->extractTo('phar2/source/',null,true);

但是,如果参数不变,再次执行extractTo的时候,会提示错误,文件已经存在。这个时候,就需要设置extractTo的第三个参数$overwrite了,就是说是否覆盖原文件。而第二个参数$files可以是字符串,也可以是数组,用于指出解压的时候就解压哪几个文件。显然,这个参数顺序安排也是不合理的,显然$overwrite是最大的需求,而$files是其次需求,一般来说,用null来忽略掉这个$files参数的匹配项目。

注意: 但是上述代码对于使用compressFiles方法的phar文件来说,这就是个陷阱,掉进去之后,不要忘记挣扎几下。对于使用了压缩手段的phar文件来说,上述代码可以解压到相关文件,但是相关文件打开之后全部是乱码或者空白。

苏南大叔:如何解包还原一个phar文件 - 005
如何解包还原一个phar文件(图2-1)

转格式为zip,再解压zip

这个代码仅仅是个途径参考,不如上边的方案来的直接。我们先把phar.phar,转化格式为phar.zip,然后再解压zip文件,得到代码。如果得到的代码还是乱码,那么轻参照上一条方案的poc

newsn.net:这里是【评论】可见内容

结论

phar代码的解包过程,似乎还是要费点周折的。在试图用其他函数方法的解包的时候,也有一些莫名其妙的问题存在。但是对于我们最基本的解包需求来说,本文的内容已经足够了。

如果您想了解更多有关phar的经验文章,欢迎您点击苏南大叔的更多经验文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   php    phar

本站的忠实读者小伙伴,正在阅读下面这些文章: