好的,帮助我理解这一点。
我的linux系统中有2个用户,它们都是“网络用户”组的一部分。
一个是webserver和php-cgi使用的www-data 一个是我的ftp-user
当我通过ftp上传文件时,对于dirs设置为775,对文件设置为664,当我在服务器上运行脚本时(如同ftp用户一样)删除该目录和文件:unlink for files works好但是命令rmdir没有工作返回权限被拒绝!?是的,目录在清空后被删除。
为什么775意味着该组的用户可以删除它,就像664文件一样。
谢谢!
答案 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()将其删除之前,目录必须为空。