views:

49

answers:

3

OK help me understand this.

I have 2 users in my linux system that are BOTH part of "web-users" group.

one is www-data used by the webserver and php-cgi one is my ftp-user

when I upload files via ftp they are set to 775 for dirs and 664 for files, when I run a script on the server (so same group like the ftp user) to delete that directory and files inside: unlink for files works ok but the command rmdir doesnt work returning permission denied!? And yes the directory is deleted after is emptied.

why is that 775 means that the group's user can delete it just like 664 for files.

Thanks!

A: 

You can't use rmdir() on a directory that contains files. The directory must be empty before you use rmdir() to delete it.

Abhijeet Pathak
Read the question completely before you answer.
codaddict
-1 same reason as above
Thariama
A: 

I encountered the same problem before and my code looked like below:

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);
    }
}

I myself thought that it was permission issue but it turned out that I just needed to call closedir before rmdir-ing. So:

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

Maybe your problem is similar to mine?

Lukman
I will try and let you know
Sandro Antonucci
+1  A: 

You might check the permissions of the parent that contains the directory you're trying to delete.

I was deleting some script-generated directories earlier this week and even with their permissions set to 777, I was still getting "permission denied" until I gave myself Write access to the parent directory.

jnpcl