开发者

php wont delete 775 dir chmod

开发者 https://www.devze.com 2023-01-14 19:23 出处:网络
OK help me understand this.开发者_Python百科 I have 2 users in my linux system that are BOTH part of \"web-users\" group.

OK help me understand this.开发者_Python百科

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!


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.


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?


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

0

精彩评论

暂无评论...
验证码 换一张
取 消