使用PHP更改zip档案中文件的创建日期属性


Change the created date attribute on a file in a zip archive using PHP

是否可以在PHP中使用ZipArchive类来更改zip文件内文件的创建日期或修改日期,而无需将文件写入磁盘并使用触摸,然后再次将文件添加到zip

不,这是不可能的。外部属性与文件修改时间无关,文件修改时间存储在外部属性之前。我已经查看了PHP中的所有压缩库,但这是不可能的。如果您的目的是简单地将数据打包到一个文件中,并且易用性不像保存文件属性那样重要,那么我建议您使用JSON。

我不确定是否有软件支持设置文件修改时间,所以你必须修改源代码来支持这样的事情,或者自己编写代码。我看了bzip源代码(不是PHP扩展),它只是从源文件中复制了它。此外,默认的文件修改时间是以DOS格式存储的,它只能精确到2秒,因此您必须在一个额外的字段中存储正确的文件修改的时间。PHP不支持写入或读取额外的字段。

最简单的解决方案是使用文件系统。

来源:
维基百科文章:https://en.wikipedia.org/wiki/Zip_%28file_format%29
基本说明:http://www.forensicswiki.org/wiki/ZIP
逆向工程:http://www.sweetscape.com/010editor/templates/files/ZIPTemplate.bt
Bzip:http://www.bzip.org/
PHP注释:http://php.net/manual/en/ziparchive.statindex.php#118629