PHP 8.4.2 Released!

filetype

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

filetypeDosya türünü döndürür

Açıklama

filetype(string $dosyaismi): string|false

Belirtilen dosyanın türünü döndürür.

Bağımsız Değişkenler

dosyaismi

Dosya yolu.

Dönen Değerler

Dosyanın türünü döndürür. Olası değerler: fifo, char, dir, block, link, file, socket ve unknown.

Bir hata oluşursa false döner. eğer stat çağrısı başarısız olur veya dosya türü anlaşılamazsa ayrıca, bir E_NOTICE iletisi çıktılanır.

Hatalar/İstisnalar

Başarısızlık durumunda bir E_WARNING çıktılanır.

Örnekler

Örnek 1 - filetype() örneği

<?php

echo filetype('/etc/passwd');
echo
"\n";
echo
filetype('/etc/');

?>

Yukarıdaki örneğin çıktısı:

file
dir

Notlar

Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

Ayrıca Bakınız

  • is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
  • is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
  • is_link() - Dosya sembolik bağ ise bunu doğrular
  • file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar
  • mime_content_type() - Bir dosya için MIME içerik türünü saptar
  • pathinfo() - Bir dosya yolu hakkında bilgi döndürür
  • stat() - Bir dosya hakkında bilgi döndürür

add a note

User Contributed Notes 4 notes

up
23
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
up
8
adlerweb
14 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",...)
up
-3
7r6ivyeo at mail dot com
16 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:

<?php
function is_hidden_file($fn) {

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

if(
$attr[3] === 'h')
return
true;

return
false;
}
?>

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.
up
-4
Abhi Jain
13 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.
eg:
$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.
To Top