Время создания / изменения файла 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']. Это относительно серверной копии файла.
Файл не "перемещается" с компьютера на сервер, когда он загружен, поток данных копируется в новый файл во временной папке перед перемещением в расположение веб-сервера. Браузеры также не отправляют метку времени модификации.