0

I have a PHP site that accepts file uploads from users and needs to store the file creation/modification (they should be the same in this case) date/time in the database.

I have tried a few approaches. These all seem to return nothing:

$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);

So I tried a shell_exec approach based on ls -l. This at least returns something, though it would seem that the time is overwritten when the file is uploaded, rendering the output useless (i.e. it returns the current time).

Is there any sure-fire way on Linux/PHP 5.4 to return the creation/modification date/time as it was before the file was uploaded?

NB $localfile is the path to a file on the local system.

James
  • 741
  • 1
  • 11
  • 28
  • filemtime and are what you want. Maybe you have your path wrong, or the permissions of the files uploaded are incorrect – Andrew Feb 24 '13 at 21:55
  • All these function calls return nothing and at the same time `is_file($localfile)` returns `true`? – Jon Feb 24 '13 at 21:56
  • `is_file` shows true. The permissions on the uploaded file are `-rw-------` and the owner is the apache user – James Feb 24 '13 at 22:03
  • You can not get the creation/modification date/time BEFORE the file was upload unless the user enters that info manually. You can get the uploaded time stamp very easily if you know the file path. – Tigger Feb 24 '13 at 22:47

2 Answers2

0

As far as I know there is no way in PHP to find the history of a files past modification times. Linux (without adding any extra tools) keeps three times access/modified/change

ls -ce
ls -le
ls -ue

There is no way of getting a 'history' of modifications to a file unless you find an auditing tool in linux to do so for you. Therefore PHP will not support what you're trying to do.

The database is made for precisely storing a history of modifications to a file, use it.

Hamad
  • 207
  • 2
  • 14
0

The stat() function yields an associative array. For modification time, use $stat['mtime'] and for creation time $stat['ctime']. This is relative to the server's copy of the file.

The file is not "moved" from computer to server when it is uploaded, the data stream is copied into a new file in the temp directory before being moved to the webserver location. Browsers do not send the modification timestamp, either.

server_kitten
  • 386
  • 3
  • 13