2012-01-01 3 views
0

Я использую Crontab через cPanel для удаления файлов и каталогов, загруженных клиентами с использованием PHP-скрипта. У этого есть изображения в каталоге, установленном как владелец 0644 99 99.Разрешение отклонено UNLINK от Crontab

Когда выполняется следующий запланированный crontab, я получаю разрешение на отклонение ошибок.

PHP -q -f /xxx/xxx/xxx/deletefiles.php

function RemoveDirectory($dirname) { 
    if (!file_exists($dirname)) { 
     return false; 
    } 
    if (is_file($dirname) || is_link($dirname)) { 
     return unlink($dirname); 
    } 
    $dir = dir($dirname); 
    while (false !== $entry = $dir->read()) { 
     if ($entry == '.' || $entry == '..') { 
      continue; 
     } 
     RemoveDirectory($dirname . DIRECTORY_SEPARATOR . $entry); 
    } 
    $dir->close(); 
    return rmdir($dirname); 
} 
if (is_dir('/xxx/xxx/public_html/xxx/xxx')) { 
    RemoveDirectory('/xxx/xxx/public_html/xxx/xxx'); 
} 

Если я запускаю этот же скрипт сам через PHP работает просто отлично. Как предоставить разрешение crontab для запуска одного и того же сценария? Должен ли я помещать этот файл в корневой каталог? Который я предпочитаю не делать.

Как я это правильно объясняю. Любая помощь присваивается.

ответ

0

Вы можете попробовать установить разрешения с помощью chmod, прежде чем удалять его. Что-то вроде:

if (is_file($dirname) || is_link($dirname)) { 
    chmod($dirname, 0777); 
    return unlink($dirname); 
} 


if (is_dir('/xxx/xxx/public_html/xxx/xxx')) { 
    chmod("/xxx/xxx/public_html/xxx/xxx", 0777); 
    RemoveDirectory('/xxx/xxx/public_html/xxx/xxx'); 
} 
+0

Это не помогло. Должно ли это быть сделано для каждого файла (изображения)? – Tim

+0

Возможно. Я не думаю, что сервер позволит вам удалить папку, не удаляя файлы. – john

+0

Я получаю chmod(): операция не разрешена – Tim