php不会删除775 dir chmod

时间:2010-09-06 10:30:04

标签: php permissions rmdir

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

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

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

当我通过ftp上传文件时,对于dirs设置为775,对文件设置为664,当我在服务器上运行脚本时(如同ftp用户一样)删除该目录和文件:unlink for files works好但是命令rmdir没有工作返回权限被拒绝!?是的,目录在清空后被删除。

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

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以查看包含您要删除的目录的permissions的{​​{1}}。

我本周早些时候删除了一些脚本生成的目录,即使权限设置为parent,我仍然得到“权限被拒绝”,直到我给777 Write {{1} {目录。

答案 1 :(得分: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);
    }
}

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

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

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

答案 2 :(得分:-2)

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