3

好的,帮助我理解这一点。

我的 linux 系统中有 2 个用户,它们都是“web-users”组的一部分。

一个是 webserver 使用的 www-data 和 php-cgi 一个是我的 ftp 用户

当我通过 ftp 上传文件时,它们设置为 775 用于 dirs 和 664 用于文件,当我在服务器上运行脚本(因此与 ftp 用户相同的组)以删除该目录和其中的文件时: unlink for files 工作正常,但命令 rmdir 不起作用返回权限被拒绝!?是的,目录在清空后被删除。

为什么 775 意味着该组的用户可以像删除文件的 664 一样删除它。

谢谢!

4

3 回答 3

1

您可以检查包含您要删除的目录的permissionsparent

本周早些时候,我删除了一些脚本生成的目录,即使它们的权限设置为,在我允许自己访问该目录777之前,我仍然会收到“权限被拒绝” 。Writeparent

于 2010-10-15T23:37:59.510 回答
0

我之前遇到过同样的问题,我的代码如下所示:

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

我自己认为这是权限问题,但事实证明我只需要在-ingclosedir之前打电话。rmdir所以:

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

也许你的问题和我的类似?

于 2010-09-06T16:28:11.260 回答
-2

您不能在包含文件的目录上使用 rmdir()。在使用 rmdir() 删除它之前,该目录必须为空。

于 2010-09-06T10:33:08.350 回答