使用PHP删除文件

时间:2013-06-21 14:00:41

标签: php

我有一个要删除的文件路径列表。我将文件路径放在服务器根目录中的纯文本文件中。例如:

files_to_be_removed.txt

/path/to/bad/file.php
/path/to/another/bad/file.php

在同一目录中,我有另一个文件:

remove.php

$handle = @fopen("files_to_be_removed.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        if (unlink($buffer))
            echo $buffer . ' removed.';
    }
    fclose($handle);
}

当我运行我的脚本时,没有输出任何内容。简单地说,列表中的文件不会被删除。那是为什么?

2 个答案:

答案 0 :(得分:1)

$files = file('files_to_be_removed.txt', FILE_IGNORE_NEW_LINES);
foreach ($files as $file) {
    if (@unlink($file)) {
        echo $file, ' removed', PHP_EOL;
    } else {
        $error = error_get_last();
        echo 'Couldn\'t remove ', $file, ': ', $error['message'], PHP_EOL;
    }
}

答案 1 :(得分:0)

我猜测文件没有被删除,因为“你已经有一个LOCK”[只是猜测] - 因为你打开它并检查它的内容。
您可以避免所有压力,只需将整个脚本调整为几行:

foreach($filepaths as $filepath){
    $status = @unlink($filepath);
    #the @ is there for error suppression -- in case the file doesn't exist
    if($status){
        #do what you want -- it was successful
    }
}