Удалить список файлов, прочитанных из txt

Я написал небольшой php-скрипт для очистки, который должен автоматически удалять список файлов на моем сервере. Список файлов представляет собой простой текстовый файл («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 🙂

0

Решение

Не совсем ответ, просто совет по использованию файла и 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 имеет ограниченные возможности записи, или вы делаете его относительным путем. В противном случае я вижу какие-то злые намерения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector