首页 > 解决方案 > 4 PHP 脚本删除具有指定扩展名和前缀的超过 21 天的文件和文件夹

问题描述

我正在尝试创建 4 个脚本来完成休闲任务:

下面是我在网上找到的代码。所以我创建了 4 个单独的文件,如 script1.php 等,上传到我的服务器上并尝试启动它们。我返回的只是浏览器窗口中的代码本身,但文件和文件夹没有被删除:(希望你能帮助我。下面我尝试采用我在网上找到的代码并创建3个脚本。不幸的是我不知道如何创建第四个,因为它会更复杂。

我只是一个前端开发人员开始学习PHP代码基础......

/***** SCRIPT 1 - Delete files older than 21 days with .txt extension *****/

$days = 21;  
$path = './mypath/folder_with_txt_files/';  
$filetypes_to_delete = array("txt");  
    
if ($handle = opendir($path))  
{   
    while (false !== ($file = readdir($handle)))  
    {  
        if (is_file($path.$file))  
        {  
            $file_info = pathinfo($path.$file);  
            if (isset($file_info['extension']) && in_array(strtolower($file_info['extension']), $filetypes_to_delete))  
            {  
                if (filemtime($path.$file) < ( time() - ( $days * 24 * 60 * 60 ) ) )  
                {  
                    unlink($path.$file);  
                }  
            }  
        }  
    }  
}  

/***** SCRIPT 2 - Delete folders older than 21 days *****/

$days = 21;  
$path = './mypath/folders_to_delete/';  
  
if ($handle = opendir($path))  
{   
    while (false !== ($file = readdir($handle)))  
    {   
        if (is_dir($path.$file))  
        {    
            if (filemtime($path.$file) < ( time() - ( $days * 24 * 60 * 60 ) ) )  
            {  
                unlink($path.$file);  
            }  
        }  
    }  
} 

/***** SCRIPT 3 - Delete files older than 21 days *****/

$days = 21;  
$path = '/mypath/folder_with_files_to_delete';  
  
if ($handle = opendir($path))  
{   
    while (false !== ($file = readdir($handle)))  
    {   
        if (is_file($path.$file))  
        {    
            if (filemtime($path.$file) < ( time() - ( $days * 24 * 60 * 60 ) ) )  
            {  
                unlink($path.$file);  
            }  
        }  
    }  
} 

/***** SCRIPT 4 - Delete files inside the folder and subfolders older than 21 days with prefix 'file_prefix' *****/

?

标签: php

解决方案


出于明显的安全原因,网络服务器努力将其工作与操作系统的工作隔离开来。网络服务器本身通常在非常严格和有限的用户帐户下运行。

要通过浏览器运行维护脚本,您需要撤消这些保护并授予网络服务器对更多文件夹的权限。

这将是一个非常糟糕的主意。

但是,您可以从 PHP 的命令行版本(即控制台)运行这些脚本。然后它将具有与从控制台继承的相同权限。


推荐阅读