我正在开发环境中使用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失败。。。。我得到的时间是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文件的名称以及它们最后的修改时间。
如有任何帮助,我们将不胜感激。。。。提前谢谢。
我知道我已经在评论中说过了,但当时我不知道这是否是问题所在。以下是完整的解释。
使用filemtime($file->getRealPath())
可以帮助解决这个问题,因为filemtime文档上的一条注释提到您需要向filemtime
提供绝对路径。现在直接使用迭代器的结果($file
变量)可能会调用DirectoryIterator::__toString
,它只返回文件名,而不是绝对路径。
它可能适用于/var/www
,因为它是工作目录,但我不能确定。