PHP - linux/unix CTIME (время изменения inode) устанавливается, когда он только изменяется
Согласно: http://www.php.net/manual/en/function.filectime.php
"В большинстве файловых систем Unix файл считается измененным при изменении его данных inode; то есть при обновлении прав доступа, владельца, группы или других метаданных из inode".
Тем не менее, запуск Debian linux (uname -r: 2.6.26-2-686) при доступе к файлу и записи в него, например, с использованием PHP
$fh = fopen($file, 'a');
fwrite($fh, "hello world");
fclose($fh);
Время изменения (filemtime) и время изменения (filectime) будут обновлены. Насколько я понимаю, ctime изменяется только при изменении настроек файла (прав доступа, владельца, имени), а не самого содержимого.
clearstatcache();
echo "$file was last changed: " . date("F d Y H:i:s.", filectime($file)). "<br>";
echo "$file was last modified: " . date("F d Y H:i:s.", filemtime($file)). "<br>";
echo "$file was last accessed: " . date("F d Y H:i:s.", fileatime($file)). "<br>";
2 ответа
Не берите в голову, прочитав http://www.kavoir.com/2009/04/linux-the-differences-between-file-times-atime-accessed-time-ctime-changed-time-and-mtime-modified-time.html
В нем говорится: "ctime - время изменения или время последнего изменения файла или каталога, при каждом изменении и обновлении файла, например при изменении владельца файла или прав доступа или изменении содержимого файла, ctime файла обновляется до Текущее время"
Когда вы изменяете данные файла - вы меняете mtime, так как mtime (время модификации) является ЧАСТЬЮ INODE, поэтому, когда mtime изменяется, метаданные файла также изменяются, следовательно, ctime (время изменения) также изменяется:)