Вопрос

ОК, помогите мне понять это.

У меня есть 2 пользователя в моей системе Linux, которые являются частью группы «Интернет-пользователей».

Один из них www-data, используемых веб-сервером и PHP-CGI, - мой FTP-пользователь

Когда я зарабатываю файлы через FTP, они установлены на 775 для DirS и 664 для файлов, когда я запускаю сценарий на сервере (так же, как и такая же группа, как пользователь FTP), чтобы удалить этот каталог и файлы внутри: Unlight для файлов работает нормально, но Команда RMDIR не работает, возвращая разрешение запрещено!? И да, каталог удаляется после того, как он опустошен.

Почему 775 означает, что пользователь группы может удалить его так же, как 664 для файлов.

Спасибо!

Это было полезно?

Решение

Вы можете проверить permissions принадлежащий parent который содержит каталог, который вы пытаетесь удалить.

Я удалил некоторые сгенерированные скрипты в начале этой недели и даже с их разрешениями, установленными на 777, Я все еще получил «разрешение запрещено», пока я не отдал себе Write Доступ к parent каталог.

Другие советы

Я столкнулся с той же проблемой, и мой код выглядел как ниже:

function recurse_delete_dir($dir) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..') {
                 $child_file = $dir . $file;
                 if (is_dir($child_file)) {
                     recurse_delete_dir($child_file);
                 }
                 else {
                     unlink($child_file);
                 }
            }
        }
        rmdir($dir);
    }
}

Я сам подумал, что это проблема разрешений, но оказалось, что мне просто нужно позвонить closedir до rmdir-Не. Так:

closedir($dh);
rmdir($dir);

Может быть, ваша проблема похожа на мою?

Вы не можете использовать RMDIR () в каталоге, который содержит файлы. Каталог должен быть пустым Прежде чем использовать RMDIR (), чтобы удалить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top