2015-11-25 7 views
1

Я использую ZipArchive для извлечения файлов из почтовогоPhp сохранить дату изменения файлов, извлеченных из архива

Вот код я использую

$zip = new ZipArchive; 
$res = $zip->open($file); 
if ($res === TRUE) { 
    $zip->extractTo('test/'); 
    $zip->close(); 
} 

Он отлично работает, но и дату последнего изменения извлеченные файлы меняются на текущее время.

Как я могу сохранить исходную последнюю измененную дату извлеченных файлов?

ответ

2

Я нашел способ сделать это, используя mtime значение, предоставленное ZipArchive::statIndex

Это изменяет измененная дата извлеченного файла после извлечения.

Вот окончательный код:

$zip = new ZipArchive; 
$res = $zip->open($file); 
if ($res === TRUE) { 
    $filename = $mtime = $zip->statIndex(0)['name']; 
    $zip->extractTo('test/'); 
    touch('test/'.$filename, $zip->statIndex(0)['mtime']); // Change the modified date of the extracted file. 
    $zip->close(); 
} 
1

Я не думаю, что это можно сделать. Каждый раз, когда создается файл, «последняя измененная дата» становится текущим, не имеет значения, как вы создали файл.

Это созданное время, которое остается неизменным. Таким образом, мы можем сказать, что когда вы извлекаете файлы, измененная дата будет текущим временем, но созданная дата будет их исходной датой создания.

+0

Там не создано времени в Linux. Я нашел способ сделать это. см. http://stackoverflow.com/questions/33910526/php-keep-the-modified-date-of-files-extracted-from-the-zip/33912217#33912217 – Badal

0

Там в open bug об этом с просьбой тянуть, чтобы исправить ее, но она не была применена еще