PHP 动态显示当前页面文件的最后修改时间戳

本文介绍如何在 php 公共页脚中准确显示**当前被访问页面**(而非 footer.php 自身)的最后修改时间,避免使用 `__file__` 导致所有页面显示同一时间戳的问题。

在使用 include "footer.php" 的多页面网站中,一个常见误区是直接在 footer.php 中调用 filemtime(__FILE__)——这只会返回 footer.php 本身的修改时间,导致所有页面底部显示完全相同的时间戳,无法反映各页面(如课程作业文件 assignment1.php、project2.php)真实编辑时间。

要实现“每个页面显示自身最后修改时间”,关键在于:让页脚获知当前正在执行的主脚本路径。PHP 提供了可靠的全局变量 $_SERVER['SCRIPT_FILENAME'],它始终指向当前被 Web 服务器直接请求的 PHP 文件的绝对路径(例如 /var/www/html/assignment3.php),而非包含文件路径。

✅ 推荐解决方案(简洁、可靠、无需遍历目录):


Validated by:

@@##@@ @@##@@

Last modified: setTimezone(new DateTimeZone("America/New_York")); $date->setTimestamp($timestamp); echo $date->format("F j, Y g:i a"); } else { echo "Unknown (file not found)"; } ?>

⚠️ 注意事项:

  • $_SERVER['SCRIPT_FILENAME'] 是最直接、最安全的方式,无需硬编码路径或遍历目录;
  • 若站点部署在 Windows 环境,确保路径分隔符兼容(PHP 会自动处理,无需额外 str_replace);
  • 建议添加 file_exists() 检查,防止因路径异常导致 filemtime() 报错;
  • 时区设置应与你的本地开发/部署环境一致;如需统一 UTC,可改用 new DateTimeZone("UTC");
  • 避免使用 get_included_files() 或 debug_backtrace(),它们不可靠且性能开销大。

? 进阶提示:若需显示“当前页面及所含关键文件(如 header.php、config.php)中最晚的修改时间”,才需采用原答案中的目录扫描方案;但对绝大多数教学项目而言,精准反映主页面时间已完全满足需求——清晰、高效、零维护成本。