PHP 8.1.28 Released!


(PHP 4, PHP 5, PHP 7, PHP 8)

filetypeObtiene el tipo de fichero


filetype(string $filename): string

Devuelve el tipo del fichero dado.



La ruta del fichero.

Valores devueltos

Devuelve el tipo del fichero. Los valores posibles son fifo, char, dir, block, link, file, socket y unknown.

Devuelve false si se produjo un error. filetype() también producirá un mensaje E_NOTICE si la llamada a las estadísticas falla o si el tipo de fichero es desconocido.


Ejemplo #1 Ejemplo de filetype()


echo filetype('/etc/passwd'); // file
echo filetype('/etc/'); // dir



En caso de fallo, se emite un E_WARNING.


Nota: Los resultados de esta función son guardados en caché. Para más información ver clearstatcache().


Desde PHP 5.0.0, esta función también puede usarse con algunos URL wrappers. Consultar Protocolos y Envolturas soportados para deter4minar qué envolturas soportan la familia de funcionalidad de stat().

Ver también

  • is_dir() - Indica si el nombre de archivo es un directorio
  • is_file() - Indica si el nombre de fichero es un fichero normal
  • is_link() - Indica si el nombre de archivo es un enlace simbólico
  • file_exists() - Comprueba si existe un fichero o directorio
  • mime_content_type() - Detecta el MIME Content-type para un fichero
  • pathinfo() - Devuelve información acerca de la ruta de un fichero
  • stat() - Da información acerca de un fichero

add a note

User Contributed Notes 6 notes

ruach at chpc dot utah dot edu
20 years ago
There are 7 values that can be returned. Here is a list of them and what each one means

block: block special device

char: character special device

dir: directory

fifo: FIFO (named pipe)

file: regular file

link: symbolic link

unknown: unknown file type
13 years ago
filetype() does not work for files >=2GB on x86 Linux. You can use stat as a workarround:

$type=trim(`stat -c%F $file`);

Note that stat returns diffenerent strings ("regular file","directory",...)
7r6ivyeo at mail dot com
15 years ago
I use the CLI version of PHP on Windows Vista. Here's how to determine if a file is marked "hidden" by NTFS:

function is_hidden_file($fn) {

$attr = trim(exec('FOR %A IN ("'.$fn.'") DO @ECHO %~aA'));

$attr[3] === 'h')


Changing <?php if($attr[3] === 'h') ?> to <?php if($attr[4] === 's') ?> will check for system files.

This should work on any Windows OS that provides DOS shell commands.
Abhi Jain
12 years ago
Putting @ in front of the filetype() function does not prevent it from raising a warning (Lstat failed), if E_WARNING is enabled on your error_reporting.

The most common cause of filetype() raising this warning and not showing a filetype() in the output (it actually returns NULL) is, if you happened to pass just the 'Dir or File Name' and not the complete "Absolute or Relative Path" to that 'file or Dir'. It may still read that file and return its filetype as "file" but for Dir's it shows warning and outputs NULL.
$pathToFile = '/var/www';
$file = 'test.php';
$dir = 'somedir';

Output for filetype($file) will be returned as 'file' and possibly without any warning, but for filetype($dir), it will return NULL with the warning "Lstat failed", unless you pass a complete path to that dir, i.e. filetype($pathToFile.'/'.$dir).

This happened to me and found this solution after a lot of trial and error. Thought, it might help someone.
9 years ago
Note there is a bug when using filetype with for example Japanese filenames :

The whole PHP interpreter comes crashing down without anyway to avoid it or capture an exception.
r dot koelpin at evisionteam dot de
10 years ago

echo "Zum testen müssen tatsächlich existente Namen verwendet werden.<br>";
"Pfad und Dateiname müssen getrennt eingetragen und durch einen Punkt verbunden sein.<br>";
"Example: [filetype(\"../dir/u_dir/\".\"temp.jpg\")] liefert -> file<br>";
To Top