权限被Crontab拒绝给UNLINK

时间:2012-01-01 14:12:44

标签: php crontab cpanel

我通过cPanel使用Crontab来删除客户端使用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 :(得分: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');
}