用于从Linux目录中删除点文件的PHP脚本

时间:2017-03-17 07:50:22

标签: php file erase

我一直致力于一个涉及一个步骤的项目,在此期间脚本需要自动删除Linux中的某个目录(及其所有内容)。

我目前正在使用以下代码执行此操作:

<div class="parent">
    <div class="child">
    The responsive design:<br>
    This is the content.
  </div><img src="https://www.vacations-abroad.com/assets/img/about.jpg">

</div>
<div class="footer">
   Footer
</div>

# Perform a recursive removal of the obsolete folder $dir_to_erase = $_SESSION['path']; function removeDirectory($dir_to_erase) { $files = glob($dir_to_erase . '/*'); foreach ($files as $file) { is_dir($file) ? removeDirectory($file) : unlink($file); } rmdir($dir_to_erase); return; } 是要删除的文件夹。像魅力一样工作,但我最近不得不在文件夹中添加一个.htaccess文件,我注意到脚本停止正常工作(它不断删除其余的文件,但不是.htaccess文件)。

有人能指出我应该添加到代码中的内容包括删除过程中隐藏的点文件吗?

3 个答案:

答案 0 :(得分:1)

您可以稍微修改您的功能以删除隐藏文件:

function removeDirectory($dir) 
{
    if (is_dir($dir)) { 
        $objects = scandir($dir); 
        foreach ($objects as $object) { 
            if ($object != "." && $object != "..") { 
                if (is_dir($dir."/".$object))
                    removeDirectory($dir."/".$object);
                else
                    unlink($dir."/".$object); 
            } 
        }
        rmdir($dir); 
    } 
}

答案 1 :(得分:1)

简单地说,您可以依靠DirectoryIterator

  

DirectoryIterator类提供了一个简单的查看界面   文件系统目录的内容。

function removeDirectory($dir_to_erase) {
    $files = new DirectoryIterator($dir_to_erase);
    foreach ($files as $file) {
        // check if not . or ..
        if (!$file->isDot()) {
            $file->isDir() ? removeDirectory($file->getPathname()) : unlink($file->getPathname());
        }
    }
    rmdir($dir_to_erase);
    return;
}

你可以使用很多功能,检查所有者,确保不删除关键文件非常有用。

答案 2 :(得分:0)

根据这个答案:

PHP glob() doesnt find .htaccess

.htaccess会找到var cmd = new SqlCommand(@" insert into product(name,price) Values(@name, @price); select scope_identity();", objCon); cmd.Parameters.AddWithValue("@name", txt_name.Text); cmd.Parameters.AddWithValue("@price", Convert.ToInt32(txt_price.Text)); var newId = (int)cmd.ExecuteScalar();