我通过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运行相同脚本的权限?我是否必须将此文件放在根目录中?我不喜欢这样做。
我是如何正确解释的。任何帮助都被挪用了。
答案 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');
}