删除从txt读取的文件列表

Delete list of files read from txt

我写了一个小的清理 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);
?> 

我还尝试将 "unlink($temp)" 放在 If 语句后面,这样它每次都会执行,以防条件本身出现问题,但结果是一样的。我束手无策。有谁知道为什么我的脚本无法成功删除列表中最后一个文件以外的任何文件?

更新:现在脚本突然成功了!我假设我的托管服务提供商在其中发挥了作用……或者可能没有。尽管如此,还是要感谢所有做出贡献的人。这是我的第一个 php-脚本,感谢您的建议,我在 php 中学到了很多关于错误跟踪的知识 :)

不是真正的答案,只是关于使用文件和 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 的写入能力有限,或者您将其设为相对路径。否则我可以看出一些恶意。