Измените созданный атрибут даты в файле в zip-архиве с помощью PHP

Можно ли использовать класс ZipArchive в PHP для изменения даты создания или изменения даты файла внутри zip-файла без записи файла на диск и использования касания к нему, а затем снова добавляя файл в zip


person Jamie H    schedule 14.10.2014    source источник
comment
Ну, посмотрите документацию и посмотрите, есть ли такая функция, я бы сказал.   -  person arkascha    schedule 14.10.2014
comment
Обходной путь может состоять в том, чтобы смонтировать zip-архив в файловую систему, чтобы доступ к его содержимому был прозрачным. Таким образом, вы могли бы использовать обычные файловые операции без фактической распаковки/переупаковки архива. Я никогда не пробовал это сам, но это должно сработать. Однако вы должны полагаться на способность вашей среды сделать это.   -  person arkascha    schedule 14.10.2014
comment
Я просмотрел документы, единственное, что я увидел, это setExternalAttributesIndex или setExternalAttributesName, но документация по ним была довольно плохой.   -  person Jamie H    schedule 14.10.2014
comment
и обходной путь звучит как огромная боль и может оказаться хуже, чем просто распаковка файлов и использование сенсорного ввода и их чтение.   -  person Jamie H    schedule 14.10.2014
comment
Может быть, это характер обходного пути. Зависит от различных факторов, например от размера файлов.   -  person arkascha    schedule 14.10.2014


Ответы (1)


Нет, это невозможно. Внешние атрибуты не имеют ничего общего со временем изменения файла, которое хранится перед внешними атрибутами. Я просмотрел все библиотеки сжатия в 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

person Shadow rider    schedule 14.01.2017