Отказано в разрешении на UNLINK от Crontab - PullRequest
0 голосов
/ 01 января 2012

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

При выполнении следующего запланированного 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 разрешение на запуск одного и того же сценария?Нужно ли размещать этот файл в корневом каталоге?Что я предпочитаю не делать.

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

1 Ответ

0 голосов
/ 01 января 2012

Вы можете попытаться установить разрешения с помощью 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');
}
...