php filemtime返回false,然后是php应用程序的根目录

时间:2012-02-01 07:45:09

标签: php ubuntu

我正在开发环境中使用Ubuntu 11.10开发一个php应用程序。 我有一个目录'/ usr / src / app_name /',其中包含一些pdf文件。 我需要检索文件名及其上次修改时间。

以下是代码段:

foreach (new DirectoryIterator('/usr/src/app_name') as $file) {
    if($file->isDot()) continue;
      print $file->getFilename().' : '.date ("F d Y H:i:s.", filemtime($file)).'<br>';
}

我正确地获取了文件名,但却给了我:PHP警告:filemtime():stat failed ....我得到的时间是1970年1月1日。

但是,如果我将目录更改为应用程序根目录,即

foreach (new DirectoryIterator('/var/www/app_name') as $file) {
  if($file->isDot()) continue;
    print $file->getFilename().' : '.date ("F d Y H:i:s.", filemtime($file)).'<br>';
 }

我得到了应用程序的php文件的所有名称及其上次修改时间。

对此的任何帮助都将非常感谢....提前致谢。

1 个答案:

答案 0 :(得分:1)

我知道我已在评论中说过,但当时我不知道是不是问题。所以这是完整的解释。

使用filemtime($file->getRealPath())可以帮助您解决问题,因为a comment on the doc of filemtime提到您需要将绝对路径提供给filemtime。现在直接使用迭代器的结果(你的$file变量)可能会调用DirectoryIterator::__toString,它只返回文件名,而不是绝对路径。

它可能适用于/var/www,因为它是工作目录,但我无法确定。