2024 PHP 开发者大会日本站

filetype

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

filetype获取文件类型

描述

filetype(字符串 $filename): 字符串|false

返回给定文件的类型。

参数

filename

文件的路径。

返回值

返回文件的类型。可能的值为 fifo、char、dir、block、link、file、socket 和 unknown。

如果发生错误,则返回 falsefiletype()如果 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() 函数族。

参见

添加备注

用户贡献的备注 4 条备注

ruach at chpc dot utah dot edu
20 年前
可以返回 7 个值。以下是它们的列表以及每个值的意思

block:块特殊设备

char:字符特殊设备

dir:目录

fifo:FIFO(命名管道)

file:普通文件

link:符号链接

unknown:未知文件类型
adlerweb
14 年前
在 x86 Linux 系统上,filetype() 无法处理大于等于 2GB 的文件。可以使用 stat 作为变通方法

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

请注意,stat 返回不同的字符串(“regular file”、“directory”,…)
7r6ivyeo at mail dot com
16 年前
我在 Windows Vista 上使用 PHP 的 CLI 版本。以下是确定 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;
}
?>

<?php if($attr[3] === 'h') ?> 更改为 <?php if($attr[4] === 's') ?> 将检查系统文件。

这应该适用于提供 DOS shell 命令的任何 Windows 操作系统。
Abhi Jain
13 年前
如果在 error_reporting 中启用了 E_WARNING,则在 filetype() 函数前面加上 @ 并不能阻止它发出警告(Lstat 失败)。

filetype() 发出此警告且输出中没有显示 filetype()(实际上返回 NULL)的最常见原因是,如果碰巧只传递了“目录或文件名”,而没有传递该“文件或目录”的完整“绝对或相对路径”。它仍然可能读取该文件并将其文件类型返回为“file”,但对于目录,它会显示警告并输出 NULL。
例如
$pathToFile = '/var/www';
$file = 'test.php';
$dir = 'somedir';

filetype($file) 的输出将返回为 'file',并且可能没有任何警告,但对于 filetype($dir),它将返回 NULL 并显示警告“Lstat failed”,除非您传递该目录的完整路径,即 filetype($pathToFile.'/'.$dir)。

这发生在我身上,经过多次反复试验后找到了这个解决方案。希望它能帮到其他人。
To Top