删除从txt读取的文件列表

时间:2015-02-04 19:28:45

标签: php file delete-file

我写了一个小的清理php脚本,它应该自动删除我服务器上的文件列表。文件列表是一个简单的txt文件(" 3.txt"),每行包含一个文件条目。

3.txt的格式:

folder/filename1.fileending
folder/filename2.fileending
folder/filename3.fileending
folder/filename4.fileending

由于某种原因,脚本似乎正确地读取了文件列表,但只设法成功删除了最后一个文件(" folder / filename4.fileending")。我认为换行可能搞砸了,过滤掉它无济于事。我也尝试过使用Unix换行符,也没有成功。

清理脚本:

<?php
$cleanlist = fopen("3.txt", "r") or die("Unable to open file list!");

while(!feof($cleanlist)) {

$temp = rtrim(fgets($cleanlist), "\r\n");

    if(!file_exists($temp))
      {
      echo ("Error deleting "). $temp . "<br>";
      }
    else
      {
      unlink($temp);
      echo ("Deleted ") . $temp . "<br>";
      }
}
fclose($cleanlist);
?> 

我也试过把#34; unlink($ temp)&#34;在If语句后面,以便每次执行它以防止条件本身出现问题,但结果是相同的。我的智慧结束了。有没有人知道为什么我的脚本无法成功删除列表中最后一个文件的任何文件?

更新:现在脚本突然出现了!我认为我的托管服务提供商在这方面发挥了作用......或者可能不是。不过,谢谢所有贡献的人。这是我的第一个php脚本,感谢你的建议,我在php中学到了很多关于错误跟踪的知识:)

1 个答案:

答案 0 :(得分:1)

不是一个真正的答案,只是建议使用文件和foreach。

就像我在评论中所说,我认为你正在采取一些不必要的措施。 file()将文件的每一行放入一个数组中,使其非常简单。

$list = file('3.txt');
if ($list === false) {
    die('Cannot open file');
}

foreach($list as $file) {
    if (unlink($file)) { 
        echo ("Deleted ") . $file . "<br>";
    }
    else {
        echo ("Error deleting "). $file. "<br>";
    }
}
// Zero out file?
#file_put_contents('3.txt', '');

我希望您确保3.txt具有有限的写入能力,或者您将其设为相对路径。我可以看到一些恶意的意图。