4 PHP скрипта, удаляющие файлы и папки старше 21 дня с указанным расширением и префиксом

#php

#php

Вопрос:

Я пытаюсь создать 4 скрипта, которые будут выполнять следующие задачи:

  • СЦЕНАРИЙ 1 — Удаление файлов старше 21 дня с расширением ‘txt’
  • СЦЕНАРИЙ 2 — Удаление папок внутри указанного пути старше 21 дня
  • СЦЕНАРИЙ 3 — Удаление файлов по указанному пути старше 21 дня
  • СКРИПТ 4 — Удаление файлов внутри папки и вложенных папок старше 21 дня с префиксом ‘file_prefix’

Ниже приведен код, который я нашел в Интернете. Итак, я создал 4 отдельных файла, таких как script1.php и так далее, загрузил на мой сервер и попытался запустить их. Все, что я вернул, это сам код в окне браузера, но файлы и папки не удаляются:( Надеюсь, вы сможете мне в этом помочь. Ниже я попытался применить код, который я нашел в Интернете, и создать 3 скрипта. К сожалению, я понятия не имею, как создать 4-й, так как это будет сложнее.

Я всего лишь интерфейсный разработчик, начал изучать основы 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']) amp;amp; 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' *****/

 ?
  

Комментарии:

1. Запускайте их в командной строке, а не в браузере.

2. Что вы пытались устранить проблему? Отображается ли какое-либо сообщение об ошибке? Если нет: были бы какие-либо, если бы вы использовали более высокий уровень отчетов об ошибках?

3. Если он показывает код PHP в браузере, вы можете просто добавить <?php and ?> в начале и в конце сценариев.

Ответ №1:

Веб-сервер изо всех сил старается изолировать свою работу от работы операционной системы по очевидным соображениям безопасности. Сам веб-сервер обычно работает под очень строгой и ограниченной учетной записью пользователя.

Для запуска сценариев обслуживания через браузер вам необходимо отменить эти защиты и предоставить веб-серверу разрешения на большее количество папок.

Это было бы очень плохой идеей.

Однако вы можете запускать эти скрипты из командной строки версии PHP, то есть из консоли. Тогда у него будут те же разрешения, что и у консоли.