Acceso a las propiedades de ficheros y directorios
Cuando trabajamos con ficheros y directorios usando PHP podemos consultar distintas propiedades de ambos. Entre ellas podemos consultar si existe, cual es su tamaño, fecha de última modificación, fecha de último acceso, y el instante de creación.
Las funciones que usaremos para acceder a las propiedades de ficheros y directorios en PHP son:
- boolean file_exists($fichero_directorio), dice si existe o no un fichero o directorio
- int filesize($fichero), retorna el tamaño de un fichero
- int fileatime($fichero), retorna el tiempo (Unix) de último acceso
- int filemtime($fichero), retorna el tiempo (Unix) de última modificación
- int filectime($fichero), retorna el tiempo (Unix) de creación (en entornos Windows)
Conocer tipos de ficheros en PHP
Por otra parte también podemos conocer tipos de archivo que es cada fichero o directorio, usando la función filetype($fichero_directorio). Esta función nos devuelve un string donde se índica que tipo es, los principales tipos son:
- dir, nos dice que el elemento es un directorio
- file, nos dice que el elemento es un fichero
Ahora vamos a ver unos ejemplos de uso para las anteriores funciones. Para ello usaremos una función listado que recibe un directorio y nos da su listado.
Tener en cuenta que si ponemos el código en …/www, chdir podrá cambiar hacía dentro desde ese punto, pero si tenemos la función en …/www/practica, chdir sólo podrá cambiar desde el fichero práctica.
<?php
function listado($directorio)
{
if (chdir($directorio))
{
echo "<ul>";
foreach (scandir($directorio,0) as $elemento)
{
if (file_exists($elemento) && filetype($elemento)=="file")
{
echo "<li>Estamos tratando el <b>fichero</b> $elemento que tiene un tamaño ".filesize($elemento).", su última acceso fue en ".fileatime($elemento).", su última modificación fue en ".filemtime($elemento).", y su fecha de creación fue en ". filectime($elemento)."</li>";
}
elseif (file_exists($elemento) && filetype($elemento)=="dir" && $elemento<>"." && $elemento<>"..")
{
echo "<li>Estamos tratando el <b>directorio</b> $elemento que tiene un tamaño ".filesize($elemento).", su última acceso fue en ".fileatime($elemento).", su última modificación fue en ".filemtime($elemento).", y su fecha de creación fue en ". filectime($elemento)."</li>";
}
}
echo "</ul>";
}
}
listado("/var/www/");
?>
Ejercicios
- Haz que las fechas se muestren en formato normal (día/mes/año)
- Modifica la función para que reciba un parámetro extra, llamado orden donde ira un 0 o un uno. Servirá para hacer el recorrido ascendente o descendente

