#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, то есть из консоли. Тогда у него будут те же разрешения, что и у консоли.