PHP获取目录的创建时间

时间:2011-07-25 12:16:29

标签: php

无论如何在php中找到目录的创建时间?我试过了filectime,但这只适用于文件。

9 个答案:

答案 0 :(得分:6)

它应该适用于目录,这是我得到的:

$ php -r "echo filectime(__DIR__);"
1311596297

答案 1 :(得分:4)

在unix中,文件夹也是一个文件。所以它也应该适用于那个

$folder = 'includes';

echo date ("F d Y H:i:s.", filemtime($folder));

输出

October 06 2010 20:20:58.

答案 2 :(得分:3)

您可以使用PHP stat function

  

收集filename命名的文件的统计信息。如果filename是符号链接,则统计信息来自文件本身,而不是符号链接。

<强>示例:

<?php
    $stat = stat('/your/path');
    echo $stat['ctime'];
?>

它将创建时间作为Unix时间戳返回。

答案 3 :(得分:1)

答案 4 :(得分:0)

如果(它不起作用) 在 filectime 功能之前尝试 clearstatcache(); ;

答案 5 :(得分:0)

$filename='dirname';
date ("F d Y H:i:s.", filectime($filename))

它会起作用。

答案 6 :(得分:0)

试试这个:

$filename = 'media/';
echo "$filename was created modified: ".date("F d Y H:i:s.", filectime($filename));

答案 7 :(得分:0)

我在Linux服务器上测试了函数filectime()和filemtime() 在目录上也正常工作,因为它们返回时间戳。

然后,我试图获取目录的最后修改日期,通过FTP重命名然后再次检查,这就是发生的奇怪事情:

  1. 创建日期时间戳已使用当前时间更新
  2. 上次修改日期未全部更新
  3. 我认为这可能是由于FTP文件操作而不是通过命令行或系统图形界面直接操作而发生的。

    在Windows上,重命名目录时,创建日期和上次修改日期都不会更改。

    对于您的测试,我还建议您查看clearstatcache()函数(我在测试中也使用它)来清除文件系统信息的PHP缓存。

答案 8 :(得分:0)

否。不可靠。

那是因为ctime不是关于创造,而是改变,正如戈登的评论所指出的那样。因此,虽然filectime()确实可以在目录上运行(至少在Unix机器上),但它很可能无法为您提供所需的日期。请参阅PHP Doc page for filectime()上的说明:

  

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

换句话说,在目录中创建新文件可能会更改目录的ctime。如果您真的需要跟踪创建时间,您需要自己实施内务管理。