在有人标记此重复内容之前,请理解我搜索了此网站,Google搜索和PHP.net。用PHP递归列出所有带日期的文件
我想要的是超级简单。我想要一个带有日期戳(最后修改)的网站上的所有文件的列表。我发现了几个声称可以这样做的脚本,但是他们都没有工作。
到目前为止,我已经找到了最好的一个是这样的一个:
header("Pragma: public");
header("Cache-Control: private");
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=age-of-files.csv");
$result = array();
$handle = opendir(".");
while ($datei = readdir($handle))
{
if (($datei != '.') && ($datei != '..'))
{
$file = "./".$datei;
if (!is_dir($file))
$result[] = $file;
}
}
closedir($handle);
foreach($result as $r)
if (file_exists($r))
echo substr($r,2).",".date ("m-d-Y", filemtime($r))."\r\n";
这对于脚本运行在dircetory的伟大工程,但它不是递归的。我需要它继续为每个子目录。我的目标是拥有一个可排序的列表,以便我可以找到在特定日期或周围修改过的文件。
我是PHP新手,请耐心等待。我在PHP.net做了一些研究(我一直在看人们提到SPL,我不确定它代表什么或它是什么,但也许它是一组标准的PHP类),看起来我需要以某种方式使用RecursiveDirectoryIterator。
我发现这个脚本在纸上看起来不错,但在我的网站上运行它会产生空白的白色屏幕。
try
{
/*** freds home directory ***/
$rdi = new recursiveDirectoryIterator('/', FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS);
$it = new recursiveIteratorIterator($rdi);
while($it->valid())
{
if(!$it->isDir())
{
echo $it->current().' '.date('Y m d H:i:s', $it->getATime())."\n";
}
/*** move to the next element ***/
$it->next();
}
}
catch(Exception $e)
{
/*** echo the error message ***/
echo $e->getMessage();
}
我宁愿因为我喜欢它创建一个CSV文件(容易排序),但我不知道如何协调二者使用的第一个脚本。有人能告诉我如何将RDI合并到第一个脚本中吗?
尝试不使用这些',FilesystemIterator :: SKIP_DOTS | FilesystemIterator :: UNIX_PATHS' – Sayed