File And Directory Manipulation In PHP (part 1) - In Stat We Trust (
Page 8 of 9 )
An alternative way of obtaining file information is via the stat() function,
which retrieves detailed status information on the named file. The return value
from stat() is an array consisting of the following elements (take a look at the
PHP manual page for the stat() function for more information on what each array
element represents):
ARRAY WHAT IT
KEY MEANS
------------------------------
dev
device number
ino inode number
mode inode protection mode
nlink
number of links
uid file owner's user ID
gid file owner's group ID
rdev device type
size file size (in bytes)
atime file's last access
timestamp
mtime file's last modify timestamp
ctime file's last change
timestamp
blksize filesystem block size
blocks file's allocated
blocks
Consider the following example, and its output, which illustrate how
stat()
works:
<?php
// if form has not yet been submitted
// display input box
if (!$_POST['file'])
{
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
Enter file path <input type="text" name="file">
</form>
<?
}
// else process form input
else
{
echo "Filename: <b>" . $_POST['file'] . "</b><br>";
// check if file exists
if (file_exists($_POST['file']))
{
// get file status
$stats = stat($_POST['file']);
// iterate over array and print information
foreach ($stats as $k=>$v)
{
if (!is_numeric($k))
{
echo "$k: <b>$v</b><br>";
}
}
}
else
{
echo "File does not exist! <br>";
}
}
?>
</body>
</html>
Here's an example of the output:
Filename: /home/web/apps/library/index.php
dev: 2049
ino:
767302
mode: 33188
nlink: 1
uid: 512
gid: 100
rdev:
21884
size: 1503
atime: 1059626194
mtime: 1059118092
ctime:
1059118095
blksize: 4096
blocks: 8
Note that stat() will return -1 for those attributes which are unsupported by
the underlying operating system.