PHP无法删除775权限的目录chmod。

4

好的,请让我帮您理解一下。

我在我的Linux系统中有两个用户,他们都是"web-users"组的成员。

一个是由Web服务器和php-cgi使用的www-data,另一个是我的ftp用户。

当我通过ftp上传文件时,目录的权限被设置为775,文件的权限被设置为664。当我在服务器上运行一个脚本(与ftp用户相同的组),尝试删除该目录及其中的文件时,文件的unlink命令可以正常工作,但rmdir命令返回“Permission denied”错误!?是的,在清空目录后该目录已被删除。

为什么会这样呢?因为775表示组用户可以像664对待文件一样删除它。

谢谢!

3个回答

2

您可以检查包含您要删除的目录的父目录权限

本周早些时候,我正在删除一些脚本生成的目录,即使它们的权限设置为777,我仍然收到“权限被拒绝”的消息,直到我给自己写入访问权限到父目录


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。所以:

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

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


-2

你不能在一个包含文件的目录上使用rmdir()函数。在使用rmdir()函数删除目录之前,该目录必须为空


1
在回答问题之前,请完整阅读问题。 - codaddict

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接