filectime

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

filectime获取文件的 inode 修改时间

描述

filectime(string $filename): int|false

获取文件的 inode 修改时间。

参数

filename

文件路径。

返回值

返回文件最后修改的时间,如果失败则返回 false。时间以 Unix 时间戳的形式返回。

错误/异常

如果失败,将发出 E_WARNING

示例

示例 #1 一个 filectime() 示例

<?php

// 输出例如 somefile.txt 最后修改时间:2002 年 12 月 29 日 22:16:23.

$filename = 'somefile.txt';
if (
file_exists($filename)) {
echo
"$filename was last changed: " . date("F d Y H:i:s.", filectime($filename));
}

?>

备注

注意:

注意:在大多数 Unix 文件系统中,当文件的 inode 数据更改时,文件被认为已更改;也就是说,当 inode 中的权限、所有者、组或其他元数据更新时。另请参阅 filemtime()(这是您想要在网页上创建“最后修改”页脚时要使用的函数)和 fileatime()

注意:

另请注意,在一些 Unix 文本中,文件的 ctime 被称为文件的创建时间。这是错误的。在大多数 Unix 文件系统中,Unix 文件没有创建时间。

注意:

注意,时间分辨率可能因文件系统而异。

注意: 此函数的结果会被缓存。有关更多详细信息,请参阅 clearstatcache()

提示

从 PHP 5.0.0 开始,此函数也可以与一些URL 包装器一起使用。请参阅 支持的协议和包装器,以确定哪些包装器支持 stat() 系列的功能。

参见

添加注释

用户贡献的注释 9 条注释

15
StevieMc at example dot com
17 年前
此方法获取目录中的所有文件,并按添加日期(通过 ftp 或其他方式)的顺序输出它们。

<?PHP
function dirList ($directory, $sortOrder){

// 获取每个文件并将详细信息添加到两个数组中
$results = array();
$handler = opendir($directory);
while (
$file = readdir($handler)) {
if (
$file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess"){
$currentModified = filectime($directory."/".$file);
$file_names[] = $file;
$file_dates[] = $currentModified;
}
}
closedir($handler);

// 按首选顺序对日期数组进行排序
if ($sortOrder == "newestFirst"){
arsort($file_dates);
}else{
asort($file_dates);
}

// 将 file_names 数组与 file_dates 数组匹配
$file_names_Array = array_keys($file_dates);
foreach (
$file_names_Array as $idx => $name) $name=$file_names[$name];
$file_dates = array_merge($file_dates);

$i = 0;

// 循环遍历日期数组,然后输出列表
foreach ($file_dates as $file_dates){
$date = $file_dates;
$j = $file_names_Array[$i];
$file = $file_names[$j];
$i++;

echo
"File name: $file - Date Added: $date. <br/>"";
}

}
?>

我希望这对某人有用。
3
faketruth at yandex dot ru
9 年前
如果您需要在 Mac OS X 上获取文件创建时间

<?php
if ($handle = popen('stat -f %B ' . escapeshellarg($filename), 'r')) {
$btime = trim(fread($handle, 100));
echo
strftime("btime: %Y.%m.%d %H:%M:%S\n", $btime);
pclose($handle);
}
?>
3
javi at live dot com
15 年前
Filemtime 似乎返回文件夹内最早修改文件的日期,所以这是一个递归函数,用于返回文件夹内最后(最近)修改文件的日期。

<?php

// 仅考虑您要显示其扩展名的文件。
$allowedExtensions = array(
'zip',
'rar',
'pdf',
'txt'
);

function
filemtime_r($path)
{
global
$allowedExtensions;

if (!
file_exists($path))
return
0;

$extension = end(explode(".", $path));
if (
is_file($path) && in_array($extension, $allowedExtensions))
return
filemtime($path);
$ret = 0;

foreach (
glob($path."/*") as $fn)
{
if (
filemtime_r($fn) > $ret)
$ret = filemtime_r($fn);
// 这将返回一个时间戳,您需要使用 date() 函数。
}
return
$ret;
}

?>
2
coolkoon at gmail dot com
13 年前
您应该避免向函数提供没有路径的文件。这适用于 filemtime() 以及可能还适用于 fileatime()。如果您省略路径,命令将失败并出现警告 "filectime(): stat failed for filename.php"。
1
website at us dot kaspersky dot com
16 年前
上面代码的第 37 行有错误。

echo "File name: $file - Date Added: $date. <br/>"";

在 <br/> 之后有一个额外的 ",需要删除才能使代码正常工作。
1
m dot rabe at directbox dot com
14 年前
在 Windows 系统上,您可以使用 fileatime() 代替 filectime()。
1
chuck dot reeves at gmail dot com
16 年前
在 Windows 系统上运行 filectime 并读取 Samba 共享中的文件,仍然会显示上次修改日期。
0
soapergem at gmail dot com
14 年前
请注意,在 Windows 系统上,filectime 会显示文件的创建时间,因为 Windows 中没有 "修改时间"。
-1
laurent dot pireyn at wanadoo dot be
22 年前
如果您对符号链接使用 filectime,您将获得实际链接到的文件的修改时间。要获取有关链接本身的信息,请使用 lstat。
To Top