如何在 Mac 上使用 PHP 获取文件的实际创建时间?

2024-02-13

当您在 Finder 中选择一个文件并在 Mac 上按 cmd+i 时,您将获得该文件(实际)创建的时间以及上次修改的时间。

我的问题很简单:如何使用 PHP 从现有的 Mac 文件中获取实际的创建时间?

现在,在研究了这个话题之后,我读到了一些帖子,说这是不可能的,但在我的世界里,“不可能”只意味着一件事需要更长的时间才能完成。欢迎解决方法和黑客。

我不需要 mtime 或 ctime 相关的建议,因为这些建议仅访问上次更新或修改文件的时间。

另外,我们在这里可能只讨论 Mac,但独立于操作系统的解决方案也是受欢迎的 - 如果它们确实适用于所有系统。


这个脚本是我管理过的最好的脚本,它包装了命令行statBSD 上提供了一个工具来得出 inode 出生时间属性。

// stat.php
$filename = 'test';

$stat = stat($filename);
date_default_timezone_set('America/Denver');
echo strftime("atime: %H:%M:%S\n", $stat['atime']);
echo strftime("mtime: %H:%M:%S\n", $stat['mtime']);
echo strftime("ctime: %H:%M:%S\n", $stat['ctime']);

if ($handle = popen('stat -f %B ' . escapeshellarg($filename), 'r')) {
    $btime = trim(fread($handle, 100));
    echo strftime("btime: %H:%M:%S\n", $btime);
    pclose($handle);
}

命令行stat该工具读取 atime、ctime、mtime 的方式与 PHP 的 stat 完全相同,但提供了第四个“inode 诞生时间”参数。 BSDstat()系统调用在可用时返回 st_birthtime,但我还没有找到一种方法将其本地公开给 PHP。

$ touch test # create a file
$ stat test
..."May 30 06:16:22 2011" "May 30 06:16:22 2011" "May 30 06:16:22 2011" "May 30 06:16:11 2011"...
$ open .
$ touch test # about one minute later
$ stat test
..."May 30 06:17:04 2011" "May 30 06:17:04 2011" "May 30 06:17:04 2011" "May 30 06:16:11 2011"...

$ php stat.php
atime: 06:52:48
mtime: 06:17:04
ctime: 06:17:04
btime: 06:16:11

以下命令返回 unix 时间戳onlyinode 出生时间,这是迄今为止我发现的最好的。你可以运行它popen() http://php.net/manual/en/function.popen.php or proc_open() http://php.net/manual/en/function.proc-open.php

$ stat -f %B test
1306757771
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Mac 上使用 PHP 获取文件的实际创建时间? 的相关文章

  • 我应该在客户端和服务器上都使用 MVC 吗?

    我决定在我的网站上使用 MVC 模式 所以 现在我在我的网站上使用 Backbone js 框架 我网站上的所有操作都是ajaxy 所以server只从db获取数据 并将数据保存到db 我是否也需要在服务器端使用 MVC 这让一切都变得复杂
  • Mac OS X 上的 ASP.NET MVC 5

    我想了解如何在运行 OS X 10 10 5 的 Mac 上使用 Microsoft ASP NET 框架构建网站 我将跟随一个使用 ASP NET MVC 5 的在线课程 到目前为止我读过的所有教程都说要使用Homebrew http b
  • 如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以进行分发?

    跟进这个答案 https stackoverflow com a 20918932 368896 to 这个问题 https stackoverflow com questions 20909341 what is the fastest
  • PHP - 解析具有固定列宽的文本文件

    我是 PHP 和 Laravel 的新手 我需要打开文件并解析内容以将它们传递到数据库 文本文件具有固定的列宽 它没有分隔符或标题 我认为使用子字符串并将每个子字符串分配给变量将是正确的方法 但我仍在学习该语言的过程中 我不知道如何实现这一
  • 如何在自定义短代码中获取 WooCommerce 产品对象以避免错误

    我有一个函数 我试图使用产品 id 获取当前产品的产品简短描述 但我不断收到未捕获错误 调用成员函数 get short description on bool in 我有以下简码函数 我试图使用产品 ID 获取当前 WooCommerce
  • 将选定的日期值从 datepicker 传递到 php

    我在这里发现了类似的问题 但大多数解决方案对我不起作用 我有一个带有日期选择器的表单 我想将所选日期传递到我的 php 文件 但它似乎不起作用 我的 html 是这样的
  • C++ 模板和头文件[重复]

    这个问题在这里已经有答案了 因此 我听说 C 模板不应分为头文件 h 和源文件 cpp 例如 这样的模板 template
  • 传递多个数组以在 codeigniter 中查看

    我的模型是这个 两个函数view和spl function view result this gt db gt get tb ourcity return result gt result array query this gt db gt
  • 将大数字转换为字母(然后再转换回来)

    是否有一个术语来描述将大数字存储为字母的想法 例如 假设我有 相对较小的 数字 138201162401719 并且我想将字符数缩小到尽可能少的字符数 我知道这无助于节省磁盘空间 英文字母表中有 26 个字母 但我将它们算作 25 个 因为
  • 如何在没有 SSH 的情况下安装/使用 Composer

    伙计们 我有一个共享主机 我无法使用 SSH 或使用 php 调用 shell shell exec 出于安全原因 我无法因资金问题升级我的服务器 但我需要安装Composer 并使用 SDK 来完成我的项目 有什么方法可以安装 使用com
  • 检查 u 键是否被按下 Swift Cocoa [重复]

    这个问题在这里已经有答案了 我正在尝试检测是否U键是否被按下 如果是的话应该print BUT BUT 但我不确定如何检查不同的按键 因为按键的文档非常糟糕 我找到了带有键码的答案 但它们仅适用于 QWERTY 键盘 视图控制器 swift
  • PHP 从 MSSQL 存储过程获取返回值

    我无法从 SQL Server MSSQL 2012 SP 获取 OUTPUT 参数以返回 PHP 我的存储过程是 CREATE PROCEDURE spGetNextSeqID ID AS INT OUTPUT AS BEGIN BEGI
  • 错误:无法检索请求的 URL

    我在 CodeIgniter 中有一个项目并托管在子域中 它有一个错误 所请求的网址无法检索 这是它的图片 Error https i stack imgur com ltBZB png 我在新安装 CodeIgniter 时遇到了同样的错
  • 无法通过 pip 安装 xmlsec

    我在运行时收到以下信息pip install xmlsec在 macOS Big Sur 11 3 1 中 Building wheels for collected packages xmlsec Building wheel for x
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • 计算两个 Java 日期实例之间的差异

    我正在使用Java的java util DateScala 中的类并想要比较Date对象和当前时间 我知道我可以使用 getTime 计算增量 new java util Date getTime oldDate getTime 然而 这只
  • 会话变量从 while 循环发送特定变量

    我有这个简单的while 循环它从 mysql 查询中检索数据并在我的主页上显示几个链接 我想避免使用 php get 函数并将查询字符串添加到我的网址中 我正在考虑使用会话变量 但我需要帮助 而且我很确定这是无法完成的 当访问者单击 wh
  • 如何从视图中使用模型函数? - 拉拉维尔 5.4

    我在模型类中创建了一个函数 它是 public function scopetest query return query gt pluck name 我的控制器代码是 public function index books Book al
  • macOS:以编程方式检查进程是否作为 launchDaemon 或 launchAgent 运行或从命令行运行

    我想了解我的进程运行的上下文 我想区分以下情况 它作为持久计划任务运行 launchDaemon launchAgent 它被称为按需并由 launchd 使用创建open命令行或双击 它是直接从命令行终端调用的 即 gt bin myPr
  • Toast.LENGTH_LONG 和 Toast.LENGTH_SHORT 的值是多少?

    我正在我的应用程序中打印 Toast 消息以显示通知 但我想知道 Toast LENGTH LONG 和 Toast LENGTH SHORT 我还可以使用哪些其他值 谁能告诉我这两个变量的值是多少 还有另一个问题可以回答您正在寻找的内容

随机推荐