【发布时间】:2020-06-04 10:53:51
【问题描述】:
我正在创建一个 cron 作业,它将每天自动刷新 tmp 目录,以确保 tmp 目录不会被不需要的文件淹没。
但是我想删除 tmp 目录中的所有文件和文件夹,除了 .htaccess 之类的一些文件,我正在使用下面的代码,但给出了错误
$filesToKeep = array(
'.htaccess'
// 'i.php',
// 'c.php'
);
$dir = '../tmp/';
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file)
{
if (! in_array($file, $filesToKeep))
{
if ($file->isDir())
rmdir($file->getRealPath());
}
else
unlink($file->getRealPath());
}
Warning: rmdir(D:\Development(s)\Project(s)\blog\app\tmp\error_pages): Directory not empty
在此之前用于运行以下代码,该代码运行良好但也用于删除.htaccess文件
$dir = '../tmp/';
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file)
{
if ($file->isDir())
rmdir($file->getRealPath());
else
unlink($file->getRealPath());
}
【问题讨论】:
-
所以这意味着你的
error_pages包含一些像.htaccess这样的文件,你不能删除它。 -
no
error_pages中只有一个名为404.php的文件 -
所以它不是空的,你不能删除它。先检查dir是否为空,然后删除。
-
如何修改代码?我有点困惑!