filetype

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

filetype取得文件类型

说明

filetype(string $filename): string|false

返回文件的类型。

参数

filename

文件的路径。

返回值

返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。

如果出错则返回 false。如果 stat 调用失败或者文件类型未知的话 filetype() 还会产生一个 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() 系列函数功能的包装器列表。

参见

添加备注

用户贡献的备注 3 notes

up
21
ruach at chpc dot utah dot edu
21 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
7
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
-2
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.
To Top