Время создания / изменения файла PHP

У меня есть сайт PHP, который принимает загрузки файлов от пользователей и должен хранить дату / время создания / изменения файла (они должны быть одинаковыми в этом случае) в базе данных.

Я попробовал несколько подходов. Все это, кажется, ничего не возвращает:

$metadata = stat($localfile);
$timestamp = $metadata[9];
die($timestamp);

$metadata = stat($localfile);
$timestamp = $metadata[10];
die($timestamp);

$metadata = filemtime($localfile);
die($metadata);

$metadata = filectime($localfile);
die($metadata);

Поэтому я попробовал подход shell_exec, основанный на ls -l, Это, по крайней мере, возвращает что-то, хотя может показаться, что при загрузке файла время перезаписывается, что делает вывод бесполезным (то есть возвращает текущее время).

Есть ли надежный способ в Linux/PHP 5.4 вернуть дату / время создания / изменения, как это было до загрузки файла?

NB $localfile путь к файлу в локальной системе

2 ответа

Насколько я знаю, в PHP нет способа найти историю файлов, прошедших время модификации. Linux (без добавления каких-либо дополнительных инструментов) трижды сохраняет доступ / изменяет / изменяет

ls -ce
ls -le
ls -ue

Невозможно получить "историю" изменений в файле, если вы не найдете в Linux инструмент аудита, который сделает это за вас. Поэтому PHP не будет поддерживать то, что вы пытаетесь сделать.

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

Функция stat() выдает ассоциативный массив. Для времени модификации используйте $stat['mtime'] и для времени создания $stat['ctime']. Это относительно серверной копии файла.

Файл не "перемещается" с компьютера на сервер, когда он загружен, поток данных копируется в новый файл во временной папке перед перемещением в расположение веб-сервера. Браузеры также не отправляют метку времени модификации.

Другие вопросы по тегам