在PHP里获取一个文件最后一次被修改的时间,最方便的做法就是使用内置函数filemtime。这个函数接收一个文件路径作为参数,返回该文件内容最后被写入的时间戳。理解它的用法能帮你快速实现缓存校验、静态资源版本判断等功能。

filemtime函数基本用法
filemtime的函数签名非常简单,形式如下:
filemtime(string $filename): int|false参数$filename是目标文件的路径,可以是相对路径或绝对路径。如果函数执行成功,会返回一个Unix时间戳(自1970年1月1日以来的秒数);如果文件不存在或没有权限读取,则返回false。
简单示例
下面是一段获取文件修改时间并格式化的代码:
<?php
// 定义文件路径
$file = 'test.txt';
// 调用filemtime获取修改时间
$time = filemtime($file);
if ($time !== false) {
// 将时间戳转为可读格式
echo '文件修改时间:' . date('Y-m-d H:i:s', $time);
} else {
echo '无法获取文件修改时间,请检查文件是否存在';
}
?>
常见注意事项
- 文件必须存在且有读取权限,否则filemtime返回false。
- 返回的是服务器本地时间的时间戳,受时区配置影响。
- 对于符号链接,filemtime返回的是链接指向文件的时间,而非链接本身。
结合clearstatcache的使用
PHP会缓存文件状态信息。如果在同一脚本中文件被修改,可能需要先调用clearstatcache()清除缓存再获取时间:
<?php $file = 'data.json'; // 修改文件前清除状态缓存 clearstatcache(); $time = filemtime($file); echo $time; ?>
总结
通过filemtime函数,开发者可以用极少的代码获取文件修改时间。实际项目中建议始终判断返回值是否为false,并将时间戳用date函数格式化为业务需要的样子,避免直接暴露原始时间戳。