filetype
(PHP 4, PHP 5, PHP 7, PHP 8)
filetype — ファイルタイプを取得する
パラメータ
filename
-
ファイルへのパス。
戻り値
ファイルのタイプを返します。返される値は fifo、char、dir、 block、link、file、socket および unknown のいずれかです。
エラーが発生すると false
を返します。
また filetype() は stat コールに失敗したり、
未知のファイルタイプであったりした場合に
E_NOTICE
メッセージを発行します。
エラー / 例外
失敗したときは E_WARNING
が発生します。
例
例1 filetype() の例
<?php
echo filetype('/etc/passwd');
echo "\n";
echo filetype('/etc/');
?>
上の例の出力は以下となります。
file dir
注意
注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。
ヒント
PHP 5.0.0
以降、この関数は、
何らかの URL ラッパーと組合せて使用することができます。
どのラッパーが stat() ファミリーをサポートしているかを調べるには
サポートするプロトコル/ラッパー を参照してください。
参考
- is_dir() - ファイルがディレクトリかどうかを調べる
- is_file() - 通常ファイルかどうかを調べる
- is_link() - ファイルがシンボリックリンクかどうかを調べる
- file_exists() - ファイルまたはディレクトリが存在するかどうか調べる
- mime_content_type() - ファイルの MIME Content-type を検出する
- pathinfo() - ファイルパスに関する情報を返す
- stat() - ファイルに関する情報を取得する
+add a note
User Contributed Notes 4 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
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",...)
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.
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.